blob: 5b50a22bb7be859714fc37029685abc0f44b66a5 [file] [log] [blame]
Fred Drake295da241998-08-10 19:42:37 +00001\section{\module{threading} ---
Fred Drakebf5a6d21999-03-12 19:57:38 +00002 Higher-level threading interface}
Fred Drakeb91e9341998-07-23 17:59:49 +00003
Fred Drakebf5a6d21999-03-12 19:57:38 +00004\declaremodule{standard}{threading}
5\modulesynopsis{Higher-level threading interface.}
Fred Drakeb91e9341998-07-23 17:59:49 +00006
Andrew M. Kuchling16440e61998-07-20 13:46:10 +00007
Fred Drake9643c671998-07-27 22:06:12 +00008This module constructs higher-level threading interfaces on top of the
Fred Drakeffbe6871999-04-22 21:23:22 +00009lower level \refmodule{thread} module.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +000010
Fred Drake740f8002002-12-30 23:00:36 +000011The \refmodule[dummythreading]{dummy_threading} module is provided for
12situations where \module{threading} cannot be used because
13\refmodule{thread} is missing.
Guido van Rossum29692332002-12-30 22:34:10 +000014
Fred Drake11f89b72003-01-06 16:38:10 +000015This module defines the following functions and objects:
Andrew M. Kuchling16440e61998-07-20 13:46:10 +000016
17\begin{funcdesc}{activeCount}{}
18Return the number of currently active \class{Thread} objects.
19The returned count is equal to the length of the list returned by
20\function{enumerate()}.
21A function that returns the number of currently active threads.
22\end{funcdesc}
23
24\begin{funcdesc}{Condition}{}
25A factory function that returns a new condition variable object.
26A condition variable allows one or more threads to wait until they
27are notified by another thread.
28\end{funcdesc}
29
30\begin{funcdesc}{currentThread}{}
31Return the current \class{Thread} object, corresponding to the
32caller's thread of control. If the caller's thread of control was not
33created through the
34\module{threading} module, a dummy thread object with limited functionality
35is returned.
36\end{funcdesc}
37
38\begin{funcdesc}{enumerate}{}
39Return a list of all currently active \class{Thread} objects.
40The list includes daemonic threads, dummy thread objects created
41by \function{currentThread()}, and the main thread. It excludes terminated
42threads and threads that have not yet been started.
43\end{funcdesc}
44
45\begin{funcdesc}{Event}{}
Fred Drake12686782002-03-19 14:37:44 +000046A factory function that returns a new event object. An event manages
47a flag that can be set to true with the \method{set()} method and
48reset to false with the \method{clear()} method. The \method{wait()}
49method blocks until the flag is true.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +000050\end{funcdesc}
51
Jim Fultond15dc062004-07-14 19:11:50 +000052\begin{classdesc*}{local}{}
53A class that represents thread-local data. Thread-local data are data
Andrew M. Kuchling872dc5c2004-07-17 13:35:43 +000054whose values are thread specific. To manage thread-local data, just
Jim Fultond15dc062004-07-14 19:11:50 +000055create an instance of \class{local} (or a subclass) and store
56attributes on it:
57
58\begin{verbatim}
Andrew M. Kuchling872dc5c2004-07-17 13:35:43 +000059mydata = threading.local()
60mydata.x = 1
Jim Fultond15dc062004-07-14 19:11:50 +000061\end{verbatim}
62
63The instance's values will be different for separate threads.
64
65For more details and extensive examples, see the documentation string
Andrew M. Kuchling872dc5c2004-07-17 13:35:43 +000066of the \module{_threading_local} module.
Jim Fultond15dc062004-07-14 19:11:50 +000067
68\versionadded{2.4}
69\end{classdesc*}
70
Andrew M. Kuchling16440e61998-07-20 13:46:10 +000071\begin{funcdesc}{Lock}{}
72A factory function that returns a new primitive lock object. Once
73a thread has acquired it, subsequent attempts to acquire it block,
74until it is released; any thread may release it.
75\end{funcdesc}
76
77\begin{funcdesc}{RLock}{}
78A factory function that returns a new reentrant lock object.
79A reentrant lock must be released by the thread that acquired it.
80Once a thread has acquired a reentrant lock, the same thread may
81acquire it again without blocking; the thread must release it once
82for each time it has acquired it.
83\end{funcdesc}
84
Fred Drake31d833d2001-08-20 18:49:00 +000085\begin{funcdesc}{Semaphore}{\optional{value}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +000086A factory function that returns a new semaphore object. A
87semaphore manages a counter representing the number of \method{release()}
88calls minus the number of \method{acquire()} calls, plus an initial value.
89The \method{acquire()} method blocks if necessary until it can return
Fred Drake31d833d2001-08-20 18:49:00 +000090without making the counter negative. If not given, \var{value} defaults to
911.
92\end{funcdesc}
93
94\begin{funcdesc}{BoundedSemaphore}{\optional{value}}
95A factory function that returns a new bounded semaphore object. A bounded
96semaphore checks to make sure its current value doesn't exceed its initial
97value. If it does, \exception{ValueError} is raised. In most situations
98semaphores are used to guard resources with limited capacity. If the
99semaphore is released too many times it's a sign of a bug. If not given,
100\var{value} defaults to 1.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000101\end{funcdesc}
102
Fred Drakec19f3922001-05-31 20:24:07 +0000103\begin{classdesc*}{Thread}{}
Fred Drake12686782002-03-19 14:37:44 +0000104A class that represents a thread of control. This class can be safely
105subclassed in a limited fashion.
Fred Drakec19f3922001-05-31 20:24:07 +0000106\end{classdesc*}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000107
Martin v. Löwis44f86962001-09-05 13:44:54 +0000108\begin{classdesc*}{Timer}{}
109A thread that executes a function after a specified interval has passed.
110\end{classdesc*}
111
Jeremy Hyltonbfccb352003-06-29 16:58:41 +0000112\begin{funcdesc}{settrace}{func}
Fred Drake57288152003-06-29 18:12:23 +0000113Set a trace function\index{trace function} for all threads started
Jeremy Hyltonbfccb352003-06-29 16:58:41 +0000114from the \module{threading} module. The \var{func} will be passed to
Fred Drake57288152003-06-29 18:12:23 +0000115\function{sys.settrace()} for each thread, before its \method{run()}
Jeremy Hyltonbfccb352003-06-29 16:58:41 +0000116method is called.
Neal Norwitzecc71712003-06-30 21:47:47 +0000117\versionadded{2.3}
Jeremy Hyltonbfccb352003-06-29 16:58:41 +0000118\end{funcdesc}
119
120\begin{funcdesc}{setprofile}{func}
Fred Drake57288152003-06-29 18:12:23 +0000121Set a profile function\index{profile function} for all threads started
Jeremy Hyltonbfccb352003-06-29 16:58:41 +0000122from the \module{threading} module. The \var{func} will be passed to
Fred Drake57288152003-06-29 18:12:23 +0000123\function{sys.setprofile()} for each thread, before its \method{run()}
Jeremy Hyltonbfccb352003-06-29 16:58:41 +0000124method is called.
Neal Norwitzecc71712003-06-30 21:47:47 +0000125\versionadded{2.3}
Jeremy Hyltonbfccb352003-06-29 16:58:41 +0000126\end{funcdesc}
127
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000128Detailed interfaces for the objects are documented below.
129
130The design of this module is loosely based on Java's threading model.
131However, where Java makes locks and condition variables basic behavior
132of every object, they are separate objects in Python. Python's \class{Thread}
133class supports a subset of the behavior of Java's Thread class;
134currently, there are no priorities, no thread groups, and threads
135cannot be destroyed, stopped, suspended, resumed, or interrupted. The
136static methods of Java's Thread class, when implemented, are mapped to
137module-level functions.
138
139All of the methods described below are executed atomically.
140
Fred Drakebf5a6d21999-03-12 19:57:38 +0000141
142\subsection{Lock Objects \label{lock-objects}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000143
144A primitive lock is a synchronization primitive that is not owned
145by a particular thread when locked. In Python, it is currently
146the lowest level synchronization primitive available, implemented
Fred Drakeffbe6871999-04-22 21:23:22 +0000147directly by the \refmodule{thread} extension module.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000148
149A primitive lock is in one of two states, ``locked'' or ``unlocked''.
150It is created in the unlocked state. It has two basic methods,
151\method{acquire()} and \method{release()}. When the state is
152unlocked, \method{acquire()} changes the state to locked and returns
153immediately. When the state is locked, \method{acquire()} blocks
154until a call to \method{release()} in another thread changes it to
155unlocked, then the \method{acquire()} call resets it to locked and
156returns. The \method{release()} method should only be called in the
157locked state; it changes the state to unlocked and returns
158immediately. When more than one thread is blocked in
159\method{acquire()} waiting for the state to turn to unlocked, only one
160thread proceeds when a \method{release()} call resets the state to
161unlocked; which one of the waiting threads proceeds is not defined,
162and may vary across implementations.
163
164All methods are executed atomically.
165
Fred Drakebf5a6d21999-03-12 19:57:38 +0000166\begin{methoddesc}{acquire}{\optional{blocking\code{ = 1}}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000167Acquire a lock, blocking or non-blocking.
168
169When invoked without arguments, block until the lock is
170unlocked, then set it to locked, and return. There is no
171return value in this case.
172
173When invoked with the \var{blocking} argument set to true, do the
174same thing as when called without arguments, and return true.
175
176When invoked with the \var{blocking} argument set to false, do not
177block. If a call without an argument would block, return false
178immediately; otherwise, do the same thing as when called
179without arguments, and return true.
180\end{methoddesc}
181
182\begin{methoddesc}{release}{}
183Release a lock.
184
185When the lock is locked, reset it to unlocked, and return. If
186any other threads are blocked waiting for the lock to become
187unlocked, allow exactly one of them to proceed.
188
189Do not call this method when the lock is unlocked.
190
191There is no return value.
192\end{methoddesc}
193
Fred Drakebf5a6d21999-03-12 19:57:38 +0000194
195\subsection{RLock Objects \label{rlock-objects}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000196
197A reentrant lock is a synchronization primitive that may be
198acquired multiple times by the same thread. Internally, it uses
199the concepts of ``owning thread'' and ``recursion level'' in
200addition to the locked/unlocked state used by primitive locks. In
201the locked state, some thread owns the lock; in the unlocked
202state, no thread owns it.
203
204To lock the lock, a thread calls its \method{acquire()} method; this
205returns once the thread owns the lock. To unlock the lock, a
Fred Drake907e76b2001-07-06 20:30:11 +0000206thread calls its \method{release()} method.
207\method{acquire()}/\method{release()} call pairs may be nested; only
208the final \method{release()} (the \method{release()} of the outermost
209pair) resets the lock to unlocked and allows another thread blocked in
210\method{acquire()} to proceed.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000211
Fred Drakebf5a6d21999-03-12 19:57:38 +0000212\begin{methoddesc}{acquire}{\optional{blocking\code{ = 1}}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000213Acquire a lock, blocking or non-blocking.
214
215When invoked without arguments: if this thread already owns
216the lock, increment the recursion level by one, and return
217immediately. Otherwise, if another thread owns the lock,
218block until the lock is unlocked. Once the lock is unlocked
219(not owned by any thread), then grab ownership, set the
220recursion level to one, and return. If more than one thread
221is blocked waiting until the lock is unlocked, only one at a
222time will be able to grab ownership of the lock. There is no
223return value in this case.
224
225When invoked with the \var{blocking} argument set to true, do the
226same thing as when called without arguments, and return true.
227
228When invoked with the \var{blocking} argument set to false, do not
229block. If a call without an argument would block, return false
230immediately; otherwise, do the same thing as when called
231without arguments, and return true.
232\end{methoddesc}
233
234\begin{methoddesc}{release}{}
235Release a lock, decrementing the recursion level. If after the
236decrement it is zero, reset the lock to unlocked (not owned by any
237thread), and if any other threads are blocked waiting for the lock to
238become unlocked, allow exactly one of them to proceed. If after the
239decrement the recursion level is still nonzero, the lock remains
240locked and owned by the calling thread.
241
242Only call this method when the calling thread owns the lock.
243Do not call this method when the lock is unlocked.
244
245There is no return value.
246\end{methoddesc}
247
Fred Drakebf5a6d21999-03-12 19:57:38 +0000248
249\subsection{Condition Objects \label{condition-objects}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000250
251A condition variable is always associated with some kind of lock;
252this can be passed in or one will be created by default. (Passing
253one in is useful when several condition variables must share the
254same lock.)
255
256A condition variable has \method{acquire()} and \method{release()}
257methods that call the corresponding methods of the associated lock.
258It also has a \method{wait()} method, and \method{notify()} and
259\method{notifyAll()} methods. These three must only be called when
260the calling thread has acquired the lock.
261
262The \method{wait()} method releases the lock, and then blocks until it
263is awakened by a \method{notify()} or \method{notifyAll()} call for
264the same condition variable in another thread. Once awakened, it
265re-acquires the lock and returns. It is also possible to specify a
266timeout.
267
268The \method{notify()} method wakes up one of the threads waiting for
269the condition variable, if any are waiting. The \method{notifyAll()}
270method wakes up all threads waiting for the condition variable.
271
272Note: the \method{notify()} and \method{notifyAll()} methods don't
273release the lock; this means that the thread or threads awakened will
274not return from their \method{wait()} call immediately, but only when
275the thread that called \method{notify()} or \method{notifyAll()}
276finally relinquishes ownership of the lock.
277
278Tip: the typical programming style using condition variables uses the
279lock to synchronize access to some shared state; threads that are
280interested in a particular change of state call \method{wait()}
281repeatedly until they see the desired state, while threads that modify
282the state call \method{notify()} or \method{notifyAll()} when they
283change the state in such a way that it could possibly be a desired
284state for one of the waiters. For example, the following code is a
285generic producer-consumer situation with unlimited buffer capacity:
286
287\begin{verbatim}
288# Consume one item
289cv.acquire()
290while not an_item_is_available():
291 cv.wait()
292get_an_available_item()
293cv.release()
294
295# Produce one item
296cv.acquire()
297make_an_item_available()
298cv.notify()
299cv.release()
300\end{verbatim}
301
302To choose between \method{notify()} and \method{notifyAll()}, consider
303whether one state change can be interesting for only one or several
304waiting threads. E.g. in a typical producer-consumer situation,
305adding one item to the buffer only needs to wake up one consumer
306thread.
307
Fred Drakebf5a6d21999-03-12 19:57:38 +0000308\begin{classdesc}{Condition}{\optional{lock}}
309If the \var{lock} argument is given and not \code{None}, it must be a
310\class{Lock} or \class{RLock} object, and it is used as the underlying
311lock. Otherwise, a new \class{RLock} object is created and used as
312the underlying lock.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000313\end{classdesc}
314
315\begin{methoddesc}{acquire}{*args}
316Acquire the underlying lock.
317This method calls the corresponding method on the underlying
318lock; the return value is whatever that method returns.
319\end{methoddesc}
320
321\begin{methoddesc}{release}{}
322Release the underlying lock.
323This method calls the corresponding method on the underlying
324lock; there is no return value.
325\end{methoddesc}
326
Fred Drakebf5a6d21999-03-12 19:57:38 +0000327\begin{methoddesc}{wait}{\optional{timeout}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000328Wait until notified or until a timeout occurs.
329This must only be called when the calling thread has acquired the
330lock.
331
332This method releases the underlying lock, and then blocks until it is
333awakened by a \method{notify()} or \method{notifyAll()} call for the
334same condition variable in another thread, or until the optional
335timeout occurs. Once awakened or timed out, it re-acquires the lock
336and returns.
337
Fred Drakebf5a6d21999-03-12 19:57:38 +0000338When the \var{timeout} argument is present and not \code{None}, it
339should be a floating point number specifying a timeout for the
340operation in seconds (or fractions thereof).
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000341
Fred Drakebf5a6d21999-03-12 19:57:38 +0000342When the underlying lock is an \class{RLock}, it is not released using
343its \method{release()} method, since this may not actually unlock the
344lock when it was acquired multiple times recursively. Instead, an
345internal interface of the \class{RLock} class is used, which really
346unlocks it even when it has been recursively acquired several times.
347Another internal interface is then used to restore the recursion level
348when the lock is reacquired.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000349\end{methoddesc}
350
351\begin{methoddesc}{notify}{}
352Wake up a thread waiting on this condition, if any.
353This must only be called when the calling thread has acquired the
354lock.
355
356This method wakes up one of the threads waiting for the condition
357variable, if any are waiting; it is a no-op if no threads are waiting.
358
359The current implementation wakes up exactly one thread, if any are
360waiting. However, it's not safe to rely on this behavior. A future,
361optimized implementation may occasionally wake up more than one
362thread.
363
364Note: the awakened thread does not actually return from its
365\method{wait()} call until it can reacquire the lock. Since
366\method{notify()} does not release the lock, its caller should.
367\end{methoddesc}
368
369\begin{methoddesc}{notifyAll}{}
370Wake up all threads waiting on this condition. This method acts like
371\method{notify()}, but wakes up all waiting threads instead of one.
372\end{methoddesc}
373
Fred Drakebf5a6d21999-03-12 19:57:38 +0000374
375\subsection{Semaphore Objects \label{semaphore-objects}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000376
377This is one of the oldest synchronization primitives in the history of
378computer science, invented by the early Dutch computer scientist
Fred Drakebf5a6d21999-03-12 19:57:38 +0000379Edsger W. Dijkstra (he used \method{P()} and \method{V()} instead of
380\method{acquire()} and \method{release()}).
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000381
382A semaphore manages an internal counter which is decremented by each
383\method{acquire()} call and incremented by each \method{release()}
384call. The counter can never go below zero; when \method{acquire()}
385finds that it is zero, it blocks, waiting until some other thread
386calls \method{release()}.
387
Fred Drakebf5a6d21999-03-12 19:57:38 +0000388\begin{classdesc}{Semaphore}{\optional{value}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000389The optional argument gives the initial value for the internal
Fred Drakebf5a6d21999-03-12 19:57:38 +0000390counter; it defaults to \code{1}.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000391\end{classdesc}
392
Fred Drakebf5a6d21999-03-12 19:57:38 +0000393\begin{methoddesc}{acquire}{\optional{blocking}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000394Acquire a semaphore.
395
396When invoked without arguments: if the internal counter is larger than
397zero on entry, decrement it by one and return immediately. If it is
398zero on entry, block, waiting until some other thread has called
399\method{release()} to make it larger than zero. This is done with
400proper interlocking so that if multiple \method{acquire()} calls are
401blocked, \method{release()} will wake exactly one of them up. The
402implementation may pick one at random, so the order in which blocked
403threads are awakened should not be relied on. There is no return
404value in this case.
405
Fred Drakebf5a6d21999-03-12 19:57:38 +0000406When invoked with \var{blocking} set to true, do the same thing as
407when called without arguments, and return true.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000408
Fred Drakebf5a6d21999-03-12 19:57:38 +0000409When invoked with \var{blocking} set to false, do not block. If a
410call without an argument would block, return false immediately;
411otherwise, do the same thing as when called without arguments, and
412return true.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000413\end{methoddesc}
414
415\begin{methoddesc}{release}{}
416Release a semaphore,
417incrementing the internal counter by one. When it was zero on
418entry and another thread is waiting for it to become larger
419than zero again, wake up that thread.
420\end{methoddesc}
421
Fred Drakebf5a6d21999-03-12 19:57:38 +0000422
Fred Drake31d833d2001-08-20 18:49:00 +0000423\subsubsection{\class{Semaphore} Example \label{semaphore-examples}}
424
425Semaphores are often used to guard resources with limited capacity, for
426example, a database server. In any situation where the size of the resource
427size is fixed, you should use a bounded semaphore. Before spawning any
428worker threads, your main thread would initialize the semaphore:
429
430\begin{verbatim}
431maxconnections = 5
432...
433pool_sema = BoundedSemaphore(value=maxconnections)
434\end{verbatim}
435
436Once spawned, worker threads call the semaphore's acquire and release
437methods when they need to connect to the server:
438
439\begin{verbatim}
440pool_sema.acquire()
441conn = connectdb()
442... use connection ...
443conn.close()
444pool_sema.release()
445\end{verbatim}
446
447The use of a bounded semaphore reduces the chance that a programming error
448which causes the semaphore to be released more than it's acquired will go
449undetected.
450
Fred Drake12686782002-03-19 14:37:44 +0000451
Fred Drakebf5a6d21999-03-12 19:57:38 +0000452\subsection{Event Objects \label{event-objects}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000453
454This is one of the simplest mechanisms for communication between
Fred Drake12686782002-03-19 14:37:44 +0000455threads: one thread signals an event and other threads wait for it.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000456
457An event object manages an internal flag that can be set to true with
Fred Drake12686782002-03-19 14:37:44 +0000458the \method{set()} method and reset to false with the \method{clear()}
459method. The \method{wait()} method blocks until the flag is true.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000460
461
462\begin{classdesc}{Event}{}
463The internal flag is initially false.
464\end{classdesc}
465
466\begin{methoddesc}{isSet}{}
467Return true if and only if the internal flag is true.
468\end{methoddesc}
469
470\begin{methoddesc}{set}{}
471Set the internal flag to true.
472All threads waiting for it to become true are awakened.
473Threads that call \method{wait()} once the flag is true will not block
474at all.
475\end{methoddesc}
476
477\begin{methoddesc}{clear}{}
478Reset the internal flag to false.
Fred Drake12686782002-03-19 14:37:44 +0000479Subsequently, threads calling \method{wait()} will block until
480\method{set()} is called to set the internal flag to true again.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000481\end{methoddesc}
482
Fred Drakebf5a6d21999-03-12 19:57:38 +0000483\begin{methoddesc}{wait}{\optional{timeout}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000484Block until the internal flag is true.
485If the internal flag is true on entry, return immediately. Otherwise,
486block until another thread calls \method{set()} to set the flag to
487true, or until the optional timeout occurs.
488
489When the timeout argument is present and not \code{None}, it should be a
490floating point number specifying a timeout for the operation in
491seconds (or fractions thereof).
492\end{methoddesc}
493
Fred Drakebf5a6d21999-03-12 19:57:38 +0000494
495\subsection{Thread Objects \label{thread-objects}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000496
497This class represents an activity that is run in a separate thread
498of control. There are two ways to specify the activity: by
499passing a callable object to the constructor, or by overriding the
500\method{run()} method in a subclass. No other methods (except for the
501constructor) should be overridden in a subclass. In other words,
Fred Drakebf5a6d21999-03-12 19:57:38 +0000502\emph{only} override the \method{__init__()} and \method{run()}
503methods of this class.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000504
505Once a thread object is created, its activity must be started by
Fred Drakebf5a6d21999-03-12 19:57:38 +0000506calling the thread's \method{start()} method. This invokes the
507\method{run()} method in a separate thread of control.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000508
509Once the thread's activity is started, the thread is considered
510'alive' and 'active' (these concepts are almost, but not quite
511exactly, the same; their definition is intentionally somewhat
Fred Drakebf5a6d21999-03-12 19:57:38 +0000512vague). It stops being alive and active when its \method{run()}
513method terminates -- either normally, or by raising an unhandled
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000514exception. The \method{isAlive()} method tests whether the thread is
515alive.
516
Fred Drakebf5a6d21999-03-12 19:57:38 +0000517Other threads can call a thread's \method{join()} method. This blocks
518the calling thread until the thread whose \method{join()} method is
519called is terminated.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000520
521A thread has a name. The name can be passed to the constructor,
Fred Drakebf5a6d21999-03-12 19:57:38 +0000522set with the \method{setName()} method, and retrieved with the
523\method{getName()} method.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000524
525A thread can be flagged as a ``daemon thread''. The significance
526of this flag is that the entire Python program exits when only
527daemon threads are left. The initial value is inherited from the
Fred Drakebf5a6d21999-03-12 19:57:38 +0000528creating thread. The flag can be set with the \method{setDaemon()}
Fred Drakec19f3922001-05-31 20:24:07 +0000529method and retrieved with the \method{isDaemon()} method.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000530
531There is a ``main thread'' object; this corresponds to the
532initial thread of control in the Python program. It is not a
533daemon thread.
534
535There is the possibility that ``dummy thread objects'' are
536created. These are thread objects corresponding to ``alien
537threads''. These are threads of control started outside the
Fred Drake907e76b2001-07-06 20:30:11 +0000538threading module, such as directly from C code. Dummy thread objects
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000539have limited functionality; they are always considered alive,
Fred Drakebf5a6d21999-03-12 19:57:38 +0000540active, and daemonic, and cannot be \method{join()}ed. They are never
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000541deleted, since it is impossible to detect the termination of alien
542threads.
543
544
545\begin{classdesc}{Thread}{group=None, target=None, name=None,
Fred Drakebf5a6d21999-03-12 19:57:38 +0000546 args=(), kwargs=\{\}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000547This constructor should always be called with keyword
548arguments. Arguments are:
549
Fred Drakec19f3922001-05-31 20:24:07 +0000550\var{group} should be \code{None}; reserved for future extension when
551a \class{ThreadGroup} class is implemented.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000552
Fred Drakec19f3922001-05-31 20:24:07 +0000553\var{target} is the callable object to be invoked by the
554\method{run()} method. Defaults to \code{None}, meaning nothing is
555called.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000556
Fred Drakec19f3922001-05-31 20:24:07 +0000557\var{name} is the thread name. By default, a unique name is
558constructed of the form ``Thread-\var{N}'' where \var{N} is a small
559decimal number.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000560
Fred Drakec19f3922001-05-31 20:24:07 +0000561\var{args} is the argument tuple for the target invocation. Defaults
562to \code{()}.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000563
Fred Drakec19f3922001-05-31 20:24:07 +0000564\var{kwargs} is a dictionary of keyword arguments for the target
565invocation. Defaults to \code{\{\}}.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000566
567If the subclass overrides the constructor, it must make sure
Fred Drakebf5a6d21999-03-12 19:57:38 +0000568to invoke the base class constructor (\code{Thread.__init__()})
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000569before doing anything else to the thread.
570\end{classdesc}
571
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000572\begin{methoddesc}{start}{}
573Start the thread's activity.
574
575This must be called at most once per thread object. It
576arranges for the object's \method{run()} method to be invoked in a
577separate thread of control.
578\end{methoddesc}
579
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000580\begin{methoddesc}{run}{}
581Method representing the thread's activity.
582
583You may override this method in a subclass. The standard
Fred Drake12686782002-03-19 14:37:44 +0000584\method{run()} method invokes the callable object passed to the
585object's constructor as the \var{target} argument, if any, with
586sequential and keyword arguments taken from the \var{args} and
587\var{kwargs} arguments, respectively.
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000588\end{methoddesc}
589
Fred Drakebf5a6d21999-03-12 19:57:38 +0000590\begin{methoddesc}{join}{\optional{timeout}}
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000591Wait until the thread terminates.
592This blocks the calling thread until the thread whose \method{join()}
593method is called terminates -- either normally or through an
594unhandled exception -- or until the optional timeout occurs.
595
Fred Drake12686782002-03-19 14:37:44 +0000596When the \var{timeout} argument is present and not \code{None}, it
597should be a floating point number specifying a timeout for the
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000598operation in seconds (or fractions thereof).
599
600A thread can be \method{join()}ed many times.
601
602A thread cannot join itself because this would cause a
603deadlock.
604
605It is an error to attempt to \method{join()} a thread before it has
606been started.
607\end{methoddesc}
608
Andrew M. Kuchling16440e61998-07-20 13:46:10 +0000609\begin{methoddesc}{getName}{}
610Return the thread's name.
611\end{methoddesc}
612
613\begin{methoddesc}{setName}{name}
614Set the thread's name.
615
616The name is a string used for identification purposes only.
617It has no semantics. Multiple threads may be given the same
618name. The initial name is set by the constructor.
619\end{methoddesc}
620
621\begin{methoddesc}{isAlive}{}
622Return whether the thread is alive.
623
624Roughly, a thread is alive from the moment the \method{start()} method
625returns until its \method{run()} method terminates.
626\end{methoddesc}
627
628\begin{methoddesc}{isDaemon}{}
629Return the thread's daemon flag.
630\end{methoddesc}
631
632\begin{methoddesc}{setDaemon}{daemonic}
633Set the thread's daemon flag to the Boolean value \var{daemonic}.
634This must be called before \method{start()} is called.
635
636The initial value is inherited from the creating thread.
637
638The entire Python program exits when no active non-daemon
639threads are left.
640\end{methoddesc}
Martin v. Löwis44f86962001-09-05 13:44:54 +0000641
642
643\subsection{Timer Objects \label{timer-objects}}
644
Fred Drake12686782002-03-19 14:37:44 +0000645This class represents an action that should be run only after a
646certain amount of time has passed --- a timer. \class{Timer} is a
647subclass of \class{Thread} and as such also functions as an example of
648creating custom threads.
Martin v. Löwis44f86962001-09-05 13:44:54 +0000649
Fred Drake12686782002-03-19 14:37:44 +0000650Timers are started, as with threads, by calling their \method{start()}
651method. The timer can be stopped (before its action has begun) by
652calling the \method{cancel()} method. The interval the timer will
653wait before executing its action may not be exactly the same as the
654interval specified by the user.
Martin v. Löwis44f86962001-09-05 13:44:54 +0000655
656For example:
657\begin{verbatim}
658def hello():
659 print "hello, world"
660
661t = Timer(30.0, hello)
662t.start() # after 30 seconds, "hello, world" will be printed
663\end{verbatim}
664
665\begin{classdesc}{Timer}{interval, function, args=[], kwargs=\{\}}
666Create a timer that will run \var{function} with arguments \var{args} and
667keyword arguments \var{kwargs}, after \var{interval} seconds have passed.
668\end{classdesc}
669
670\begin{methoddesc}{cancel}{}
Fred Drake12686782002-03-19 14:37:44 +0000671Stop the timer, and cancel the execution of the timer's action. This
672will only work if the timer is still in its waiting stage.
Martin v. Löwis44f86962001-09-05 13:44:54 +0000673\end{methoddesc}