blob: 44e4d6dd05e54d38b504d7bf3559f529bec7d39c [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001:mod:`threading` --- Higher-level threading interface
2=====================================================
3
4.. module:: threading
5 :synopsis: Higher-level threading interface.
6
Éric Araujo29a0b572011-08-19 02:14:03 +02007**Source code:** :source:`Lib/threading.py`
8
9--------------
Georg Brandl8ec7f652007-08-15 14:28:01 +000010
11This module constructs higher-level threading interfaces on top of the lower
12level :mod:`thread` module.
Georg Brandla6168f92008-05-25 07:20:14 +000013See also the :mod:`mutex` and :mod:`Queue` modules.
Georg Brandl8ec7f652007-08-15 14:28:01 +000014
15The :mod:`dummy_threading` module is provided for situations where
16:mod:`threading` cannot be used because :mod:`thread` is missing.
17
Benjamin Petersonf4395602008-06-11 17:50:00 +000018.. note::
19
Victor Stinner8ded4772010-05-14 14:20:07 +000020 Starting with Python 2.6, this module provides :pep:`8` compliant aliases and
Benjamin Peterson973e6c22008-09-01 23:12:58 +000021 properties to replace the ``camelCase`` names that were inspired by Java's
22 threading API. This updated API is compatible with that of the
23 :mod:`multiprocessing` module. However, no schedule has been set for the
24 deprecation of the ``camelCase`` names and they remain fully supported in
25 both Python 2.x and 3.x.
Benjamin Petersonf4395602008-06-11 17:50:00 +000026
Georg Brandl2cd82a82009-03-09 14:25:07 +000027.. note::
Georg Brandl8ec7f652007-08-15 14:28:01 +000028
Georg Brandl2cd82a82009-03-09 14:25:07 +000029 Starting with Python 2.5, several Thread methods raise :exc:`RuntimeError`
30 instead of :exc:`AssertionError` if called erroneously.
31
Antoine Pitrou9f41bb32011-01-06 16:35:14 +000032.. impl-detail::
33
34 Due to the :term:`Global Interpreter Lock`, in CPython only one thread
35 can execute Python code at once (even though certain performance-oriented
36 libraries might overcome this limitation).
37 If you want your application to make better of use of the computational
38 resources of multi-core machines, you are advised to use
39 :mod:`multiprocessing`. However, threading is still an appropriate model
40 if you want to run multiple I/O-bound tasks simultaneously.
41
Antoine Pitrou9f41bb32011-01-06 16:35:14 +000042
Georg Brandl2cd82a82009-03-09 14:25:07 +000043This module defines the following functions and objects:
Georg Brandl8ec7f652007-08-15 14:28:01 +000044
Benjamin Peterson0fbcf692008-06-11 17:27:50 +000045.. function:: active_count()
Benjamin Petersonf4395602008-06-11 17:50:00 +000046 activeCount()
Georg Brandl8ec7f652007-08-15 14:28:01 +000047
48 Return the number of :class:`Thread` objects currently alive. The returned
Georg Brandlf4da6662009-09-19 12:04:16 +000049 count is equal to the length of the list returned by :func:`.enumerate`.
Georg Brandl8ec7f652007-08-15 14:28:01 +000050
51
52.. function:: Condition()
53 :noindex:
54
55 A factory function that returns a new condition variable object. A condition
56 variable allows one or more threads to wait until they are notified by another
57 thread.
58
Georg Brandl21946af2010-10-06 09:28:45 +000059 See :ref:`condition-objects`.
60
Georg Brandl8ec7f652007-08-15 14:28:01 +000061
Benjamin Peterson0fbcf692008-06-11 17:27:50 +000062.. function:: current_thread()
Benjamin Petersonf4395602008-06-11 17:50:00 +000063 currentThread()
Georg Brandl8ec7f652007-08-15 14:28:01 +000064
65 Return the current :class:`Thread` object, corresponding to the caller's thread
66 of control. If the caller's thread of control was not created through the
67 :mod:`threading` module, a dummy thread object with limited functionality is
68 returned.
69
70
71.. function:: enumerate()
72
Benjamin Peterson0fbcf692008-06-11 17:27:50 +000073 Return a list of all :class:`Thread` objects currently alive. The list
74 includes daemonic threads, dummy thread objects created by
75 :func:`current_thread`, and the main thread. It excludes terminated threads
76 and threads that have not yet been started.
Georg Brandl8ec7f652007-08-15 14:28:01 +000077
78
79.. function:: Event()
80 :noindex:
81
82 A factory function that returns a new event object. An event manages a flag
Georg Brandl9fa61bb2009-07-26 14:19:57 +000083 that can be set to true with the :meth:`~Event.set` method and reset to false
84 with the :meth:`clear` method. The :meth:`wait` method blocks until the flag
85 is true.
Georg Brandl8ec7f652007-08-15 14:28:01 +000086
Georg Brandl21946af2010-10-06 09:28:45 +000087 See :ref:`event-objects`.
88
Georg Brandl8ec7f652007-08-15 14:28:01 +000089
90.. class:: local
91
92 A class that represents thread-local data. Thread-local data are data whose
93 values are thread specific. To manage thread-local data, just create an
94 instance of :class:`local` (or a subclass) and store attributes on it::
95
96 mydata = threading.local()
97 mydata.x = 1
98
99 The instance's values will be different for separate threads.
100
101 For more details and extensive examples, see the documentation string of the
102 :mod:`_threading_local` module.
103
104 .. versionadded:: 2.4
105
106
107.. function:: Lock()
108
109 A factory function that returns a new primitive lock object. Once a thread has
110 acquired it, subsequent attempts to acquire it block, until it is released; any
111 thread may release it.
112
Georg Brandl21946af2010-10-06 09:28:45 +0000113 See :ref:`lock-objects`.
114
Georg Brandl8ec7f652007-08-15 14:28:01 +0000115
116.. function:: RLock()
117
118 A factory function that returns a new reentrant lock object. A reentrant lock
119 must be released by the thread that acquired it. Once a thread has acquired a
120 reentrant lock, the same thread may acquire it again without blocking; the
121 thread must release it once for each time it has acquired it.
122
Georg Brandl21946af2010-10-06 09:28:45 +0000123 See :ref:`rlock-objects`.
124
Georg Brandl8ec7f652007-08-15 14:28:01 +0000125
126.. function:: Semaphore([value])
127 :noindex:
128
129 A factory function that returns a new semaphore object. A semaphore manages a
130 counter representing the number of :meth:`release` calls minus the number of
131 :meth:`acquire` calls, plus an initial value. The :meth:`acquire` method blocks
132 if necessary until it can return without making the counter negative. If not
133 given, *value* defaults to 1.
134
Georg Brandl21946af2010-10-06 09:28:45 +0000135 See :ref:`semaphore-objects`.
136
Georg Brandl8ec7f652007-08-15 14:28:01 +0000137
138.. function:: BoundedSemaphore([value])
139
140 A factory function that returns a new bounded semaphore object. A bounded
141 semaphore checks to make sure its current value doesn't exceed its initial
142 value. If it does, :exc:`ValueError` is raised. In most situations semaphores
143 are used to guard resources with limited capacity. If the semaphore is released
144 too many times it's a sign of a bug. If not given, *value* defaults to 1.
145
146
147.. class:: Thread
Georg Brandl21946af2010-10-06 09:28:45 +0000148 :noindex:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000149
150 A class that represents a thread of control. This class can be safely
151 subclassed in a limited fashion.
152
Georg Brandl21946af2010-10-06 09:28:45 +0000153 See :ref:`thread-objects`.
154
Georg Brandl8ec7f652007-08-15 14:28:01 +0000155
156.. class:: Timer
Georg Brandl21946af2010-10-06 09:28:45 +0000157 :noindex:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000158
159 A thread that executes a function after a specified interval has passed.
160
Georg Brandl21946af2010-10-06 09:28:45 +0000161 See :ref:`timer-objects`.
162
Georg Brandl8ec7f652007-08-15 14:28:01 +0000163
164.. function:: settrace(func)
165
166 .. index:: single: trace function
167
168 Set a trace function for all threads started from the :mod:`threading` module.
169 The *func* will be passed to :func:`sys.settrace` for each thread, before its
170 :meth:`run` method is called.
171
172 .. versionadded:: 2.3
173
174
175.. function:: setprofile(func)
176
177 .. index:: single: profile function
178
179 Set a profile function for all threads started from the :mod:`threading` module.
180 The *func* will be passed to :func:`sys.setprofile` for each thread, before its
181 :meth:`run` method is called.
182
183 .. versionadded:: 2.3
184
185
186.. function:: stack_size([size])
187
188 Return the thread stack size used when creating new threads. The optional
189 *size* argument specifies the stack size to be used for subsequently created
190 threads, and must be 0 (use platform or configured default) or a positive
191 integer value of at least 32,768 (32kB). If changing the thread stack size is
192 unsupported, a :exc:`ThreadError` is raised. If the specified stack size is
193 invalid, a :exc:`ValueError` is raised and the stack size is unmodified. 32kB
194 is currently the minimum supported stack size value to guarantee sufficient
195 stack space for the interpreter itself. Note that some platforms may have
196 particular restrictions on values for the stack size, such as requiring a
197 minimum stack size > 32kB or requiring allocation in multiples of the system
198 memory page size - platform documentation should be referred to for more
199 information (4kB pages are common; using multiples of 4096 for the stack size is
200 the suggested approach in the absence of more specific information).
201 Availability: Windows, systems with POSIX threads.
202
203 .. versionadded:: 2.5
204
205Detailed interfaces for the objects are documented below.
206
207The design of this module is loosely based on Java's threading model. However,
208where Java makes locks and condition variables basic behavior of every object,
209they are separate objects in Python. Python's :class:`Thread` class supports a
210subset of the behavior of Java's Thread class; currently, there are no
211priorities, no thread groups, and threads cannot be destroyed, stopped,
212suspended, resumed, or interrupted. The static methods of Java's Thread class,
213when implemented, are mapped to module-level functions.
214
215All of the methods described below are executed atomically.
216
217
Georg Brandl01ba86a2008-11-06 10:20:49 +0000218.. _thread-objects:
219
220Thread Objects
221--------------
222
223This class represents an activity that is run in a separate thread of control.
224There are two ways to specify the activity: by passing a callable object to the
225constructor, or by overriding the :meth:`run` method in a subclass. No other
226methods (except for the constructor) should be overridden in a subclass. In
227other words, *only* override the :meth:`__init__` and :meth:`run` methods of
228this class.
229
230Once a thread object is created, its activity must be started by calling the
231thread's :meth:`start` method. This invokes the :meth:`run` method in a
232separate thread of control.
233
234Once the thread's activity is started, the thread is considered 'alive'. It
235stops being alive when its :meth:`run` method terminates -- either normally, or
236by raising an unhandled exception. The :meth:`is_alive` method tests whether the
237thread is alive.
238
239Other threads can call a thread's :meth:`join` method. This blocks the calling
240thread until the thread whose :meth:`join` method is called is terminated.
241
242A thread has a name. The name can be passed to the constructor, and read or
243changed through the :attr:`name` attribute.
244
245A thread can be flagged as a "daemon thread". The significance of this flag is
246that the entire Python program exits when only daemon threads are left. The
247initial value is inherited from the creating thread. The flag can be set
Georg Brandlecd2afa2009-02-05 11:40:35 +0000248through the :attr:`daemon` property.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000249
250There is a "main thread" object; this corresponds to the initial thread of
251control in the Python program. It is not a daemon thread.
252
253There is the possibility that "dummy thread objects" are created. These are
254thread objects corresponding to "alien threads", which are threads of control
255started outside the threading module, such as directly from C code. Dummy
256thread objects have limited functionality; they are always considered alive and
257daemonic, and cannot be :meth:`join`\ ed. They are never deleted, since it is
258impossible to detect the termination of alien threads.
259
260
261.. class:: Thread(group=None, target=None, name=None, args=(), kwargs={})
262
Georg Brandl3591a8f2009-07-26 14:44:23 +0000263 This constructor should always be called with keyword arguments. Arguments
264 are:
Georg Brandl01ba86a2008-11-06 10:20:49 +0000265
266 *group* should be ``None``; reserved for future extension when a
267 :class:`ThreadGroup` class is implemented.
268
269 *target* is the callable object to be invoked by the :meth:`run` method.
270 Defaults to ``None``, meaning nothing is called.
271
Georg Brandl3591a8f2009-07-26 14:44:23 +0000272 *name* is the thread name. By default, a unique name is constructed of the
273 form "Thread-*N*" where *N* is a small decimal number.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000274
275 *args* is the argument tuple for the target invocation. Defaults to ``()``.
276
277 *kwargs* is a dictionary of keyword arguments for the target invocation.
278 Defaults to ``{}``.
279
Georg Brandl3591a8f2009-07-26 14:44:23 +0000280 If the subclass overrides the constructor, it must make sure to invoke the
281 base class constructor (``Thread.__init__()``) before doing anything else to
282 the thread.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000283
Georg Brandl3591a8f2009-07-26 14:44:23 +0000284 .. method:: start()
Georg Brandl01ba86a2008-11-06 10:20:49 +0000285
Georg Brandl3591a8f2009-07-26 14:44:23 +0000286 Start the thread's activity.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000287
Georg Brandl3591a8f2009-07-26 14:44:23 +0000288 It must be called at most once per thread object. It arranges for the
289 object's :meth:`run` method to be invoked in a separate thread of control.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000290
Brian Curtin37c4a722011-01-31 19:55:14 +0000291 This method will raise a :exc:`RuntimeError` if called more than once
Georg Brandl3591a8f2009-07-26 14:44:23 +0000292 on the same thread object.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000293
Georg Brandl3591a8f2009-07-26 14:44:23 +0000294 .. method:: run()
Georg Brandl01ba86a2008-11-06 10:20:49 +0000295
Georg Brandl3591a8f2009-07-26 14:44:23 +0000296 Method representing the thread's activity.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000297
Georg Brandl3591a8f2009-07-26 14:44:23 +0000298 You may override this method in a subclass. The standard :meth:`run`
299 method invokes the callable object passed to the object's constructor as
300 the *target* argument, if any, with sequential and keyword arguments taken
301 from the *args* and *kwargs* arguments, respectively.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000302
Georg Brandl3591a8f2009-07-26 14:44:23 +0000303 .. method:: join([timeout])
Georg Brandl01ba86a2008-11-06 10:20:49 +0000304
Georg Brandl3591a8f2009-07-26 14:44:23 +0000305 Wait until the thread terminates. This blocks the calling thread until the
306 thread whose :meth:`join` method is called terminates -- either normally
307 or through an unhandled exception -- or until the optional timeout occurs.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000308
Georg Brandl3591a8f2009-07-26 14:44:23 +0000309 When the *timeout* argument is present and not ``None``, it should be a
310 floating point number specifying a timeout for the operation in seconds
311 (or fractions thereof). As :meth:`join` always returns ``None``, you must
312 call :meth:`isAlive` after :meth:`join` to decide whether a timeout
313 happened -- if the thread is still alive, the :meth:`join` call timed out.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000314
Georg Brandl3591a8f2009-07-26 14:44:23 +0000315 When the *timeout* argument is not present or ``None``, the operation will
316 block until the thread terminates.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000317
Georg Brandl3591a8f2009-07-26 14:44:23 +0000318 A thread can be :meth:`join`\ ed many times.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000319
Georg Brandl3591a8f2009-07-26 14:44:23 +0000320 :meth:`join` raises a :exc:`RuntimeError` if an attempt is made to join
321 the current thread as that would cause a deadlock. It is also an error to
322 :meth:`join` a thread before it has been started and attempts to do so
323 raises the same exception.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000324
Georg Brandl3591a8f2009-07-26 14:44:23 +0000325 .. method:: getName()
326 setName()
Georg Brandl01ba86a2008-11-06 10:20:49 +0000327
Georg Brandl3591a8f2009-07-26 14:44:23 +0000328 Old API for :attr:`~Thread.name`.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000329
Georg Brandl3591a8f2009-07-26 14:44:23 +0000330 .. attribute:: name
Georg Brandl01ba86a2008-11-06 10:20:49 +0000331
Georg Brandl3591a8f2009-07-26 14:44:23 +0000332 A string used for identification purposes only. It has no semantics.
333 Multiple threads may be given the same name. The initial name is set by
334 the constructor.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000335
Georg Brandl3591a8f2009-07-26 14:44:23 +0000336 .. attribute:: ident
Georg Brandl01ba86a2008-11-06 10:20:49 +0000337
Georg Brandl3591a8f2009-07-26 14:44:23 +0000338 The 'thread identifier' of this thread or ``None`` if the thread has not
339 been started. This is a nonzero integer. See the
340 :func:`thread.get_ident()` function. Thread identifiers may be recycled
341 when a thread exits and another thread is created. The identifier is
342 available even after the thread has exited.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000343
Georg Brandl3591a8f2009-07-26 14:44:23 +0000344 .. versionadded:: 2.6
Georg Brandl01ba86a2008-11-06 10:20:49 +0000345
Georg Brandl3591a8f2009-07-26 14:44:23 +0000346 .. method:: is_alive()
347 isAlive()
Georg Brandl01ba86a2008-11-06 10:20:49 +0000348
Georg Brandl3591a8f2009-07-26 14:44:23 +0000349 Return whether the thread is alive.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000350
Brett Cannon11a30612010-07-23 12:30:10 +0000351 This method returns ``True`` just before the :meth:`run` method starts
352 until just after the :meth:`run` method terminates. The module function
Georg Brandlf4da6662009-09-19 12:04:16 +0000353 :func:`.enumerate` returns a list of all alive threads.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000354
Georg Brandl3591a8f2009-07-26 14:44:23 +0000355 .. method:: isDaemon()
356 setDaemon()
Georg Brandl01ba86a2008-11-06 10:20:49 +0000357
Georg Brandl3591a8f2009-07-26 14:44:23 +0000358 Old API for :attr:`~Thread.daemon`.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000359
Georg Brandl3591a8f2009-07-26 14:44:23 +0000360 .. attribute:: daemon
Georg Brandl01ba86a2008-11-06 10:20:49 +0000361
Georg Brandl3591a8f2009-07-26 14:44:23 +0000362 A boolean value indicating whether this thread is a daemon thread (True)
363 or not (False). This must be set before :meth:`start` is called,
364 otherwise :exc:`RuntimeError` is raised. Its initial value is inherited
365 from the creating thread; the main thread is not a daemon thread and
366 therefore all threads created in the main thread default to :attr:`daemon`
367 = ``False``.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000368
Georg Brandl3591a8f2009-07-26 14:44:23 +0000369 The entire Python program exits when no alive non-daemon threads are left.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000370
371
Georg Brandl8ec7f652007-08-15 14:28:01 +0000372.. _lock-objects:
373
374Lock Objects
375------------
376
377A primitive lock is a synchronization primitive that is not owned by a
378particular thread when locked. In Python, it is currently the lowest level
379synchronization primitive available, implemented directly by the :mod:`thread`
380extension module.
381
382A primitive lock is in one of two states, "locked" or "unlocked". It is created
383in the unlocked state. It has two basic methods, :meth:`acquire` and
384:meth:`release`. When the state is unlocked, :meth:`acquire` changes the state
385to locked and returns immediately. When the state is locked, :meth:`acquire`
386blocks until a call to :meth:`release` in another thread changes it to unlocked,
387then the :meth:`acquire` call resets it to locked and returns. The
388:meth:`release` method should only be called in the locked state; it changes the
389state to unlocked and returns immediately. If an attempt is made to release an
390unlocked lock, a :exc:`RuntimeError` will be raised.
391
392When more than one thread is blocked in :meth:`acquire` waiting for the state to
393turn to unlocked, only one thread proceeds when a :meth:`release` call resets
394the state to unlocked; which one of the waiting threads proceeds is not defined,
395and may vary across implementations.
396
397All methods are executed atomically.
398
399
Terry Reedyc0b35442011-01-01 00:36:18 +0000400.. method:: Lock.acquire([blocking])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000401
402 Acquire a lock, blocking or non-blocking.
403
R David Murray1bddab72012-05-17 09:15:02 -0400404 When invoked with the *blocking* argument set to ``True`` (the default),
405 block until the lock is unlocked, then set it to locked and return ``True``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000406
R David Murray1bddab72012-05-17 09:15:02 -0400407 When invoked with the *blocking* argument set to ``False``, do not block.
408 If a call with *blocking* set to ``True`` would block, return ``False``
409 immediately; otherwise, set the lock to locked and return ``True``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000410
411
412.. method:: Lock.release()
413
414 Release a lock.
415
416 When the lock is locked, reset it to unlocked, and return. If any other threads
417 are blocked waiting for the lock to become unlocked, allow exactly one of them
418 to proceed.
419
Sandro Tosiceeb47d2012-04-05 22:51:00 +0200420 When invoked on an unlocked lock, a :exc:`ThreadError` is raised.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000421
422 There is no return value.
423
424
425.. _rlock-objects:
426
427RLock Objects
428-------------
429
430A reentrant lock is a synchronization primitive that may be acquired multiple
431times by the same thread. Internally, it uses the concepts of "owning thread"
432and "recursion level" in addition to the locked/unlocked state used by primitive
433locks. In the locked state, some thread owns the lock; in the unlocked state,
434no thread owns it.
435
436To lock the lock, a thread calls its :meth:`acquire` method; this returns once
437the thread owns the lock. To unlock the lock, a thread calls its
438:meth:`release` method. :meth:`acquire`/:meth:`release` call pairs may be
439nested; only the final :meth:`release` (the :meth:`release` of the outermost
440pair) resets the lock to unlocked and allows another thread blocked in
441:meth:`acquire` to proceed.
442
443
444.. method:: RLock.acquire([blocking=1])
445
446 Acquire a lock, blocking or non-blocking.
447
448 When invoked without arguments: if this thread already owns the lock, increment
449 the recursion level by one, and return immediately. Otherwise, if another
450 thread owns the lock, block until the lock is unlocked. Once the lock is
451 unlocked (not owned by any thread), then grab ownership, set the recursion level
452 to one, and return. If more than one thread is blocked waiting until the lock
453 is unlocked, only one at a time will be able to grab ownership of the lock.
454 There is no return value in this case.
455
456 When invoked with the *blocking* argument set to true, do the same thing as when
457 called without arguments, and return true.
458
459 When invoked with the *blocking* argument set to false, do not block. If a call
460 without an argument would block, return false immediately; otherwise, do the
461 same thing as when called without arguments, and return true.
462
463
464.. method:: RLock.release()
465
466 Release a lock, decrementing the recursion level. If after the decrement it is
467 zero, reset the lock to unlocked (not owned by any thread), and if any other
468 threads are blocked waiting for the lock to become unlocked, allow exactly one
469 of them to proceed. If after the decrement the recursion level is still
470 nonzero, the lock remains locked and owned by the calling thread.
471
472 Only call this method when the calling thread owns the lock. A
473 :exc:`RuntimeError` is raised if this method is called when the lock is
474 unlocked.
475
476 There is no return value.
477
478
479.. _condition-objects:
480
481Condition Objects
482-----------------
483
484A condition variable is always associated with some kind of lock; this can be
485passed in or one will be created by default. (Passing one in is useful when
486several condition variables must share the same lock.)
487
488A condition variable has :meth:`acquire` and :meth:`release` methods that call
489the corresponding methods of the associated lock. It also has a :meth:`wait`
490method, and :meth:`notify` and :meth:`notifyAll` methods. These three must only
491be called when the calling thread has acquired the lock, otherwise a
492:exc:`RuntimeError` is raised.
493
494The :meth:`wait` method releases the lock, and then blocks until it is awakened
495by a :meth:`notify` or :meth:`notifyAll` call for the same condition variable in
496another thread. Once awakened, it re-acquires the lock and returns. It is also
497possible to specify a timeout.
498
499The :meth:`notify` method wakes up one of the threads waiting for the condition
500variable, if any are waiting. The :meth:`notifyAll` method wakes up all threads
501waiting for the condition variable.
502
503Note: the :meth:`notify` and :meth:`notifyAll` methods don't release the lock;
504this means that the thread or threads awakened will not return from their
505:meth:`wait` call immediately, but only when the thread that called
506:meth:`notify` or :meth:`notifyAll` finally relinquishes ownership of the lock.
507
508Tip: the typical programming style using condition variables uses the lock to
509synchronize access to some shared state; threads that are interested in a
510particular change of state call :meth:`wait` repeatedly until they see the
511desired state, while threads that modify the state call :meth:`notify` or
512:meth:`notifyAll` when they change the state in such a way that it could
513possibly be a desired state for one of the waiters. For example, the following
514code is a generic producer-consumer situation with unlimited buffer capacity::
515
516 # Consume one item
517 cv.acquire()
518 while not an_item_is_available():
519 cv.wait()
520 get_an_available_item()
521 cv.release()
522
523 # Produce one item
524 cv.acquire()
525 make_an_item_available()
526 cv.notify()
527 cv.release()
528
529To choose between :meth:`notify` and :meth:`notifyAll`, consider whether one
530state change can be interesting for only one or several waiting threads. E.g.
531in a typical producer-consumer situation, adding one item to the buffer only
532needs to wake up one consumer thread.
533
534
535.. class:: Condition([lock])
536
Georg Brandl3591a8f2009-07-26 14:44:23 +0000537 If the *lock* argument is given and not ``None``, it must be a :class:`Lock`
538 or :class:`RLock` object, and it is used as the underlying lock. Otherwise,
539 a new :class:`RLock` object is created and used as the underlying lock.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000540
Georg Brandl3591a8f2009-07-26 14:44:23 +0000541 .. method:: acquire(*args)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000542
Georg Brandl3591a8f2009-07-26 14:44:23 +0000543 Acquire the underlying lock. This method calls the corresponding method on
544 the underlying lock; the return value is whatever that method returns.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000545
Georg Brandl3591a8f2009-07-26 14:44:23 +0000546 .. method:: release()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000547
Georg Brandl3591a8f2009-07-26 14:44:23 +0000548 Release the underlying lock. This method calls the corresponding method on
549 the underlying lock; there is no return value.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000550
Georg Brandl3591a8f2009-07-26 14:44:23 +0000551 .. method:: wait([timeout])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000552
Georg Brandl3591a8f2009-07-26 14:44:23 +0000553 Wait until notified or until a timeout occurs. If the calling thread has not
554 acquired the lock when this method is called, a :exc:`RuntimeError` is raised.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000555
Georg Brandl3591a8f2009-07-26 14:44:23 +0000556 This method releases the underlying lock, and then blocks until it is
557 awakened by a :meth:`notify` or :meth:`notifyAll` call for the same
558 condition variable in another thread, or until the optional timeout
559 occurs. Once awakened or timed out, it re-acquires the lock and returns.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000560
Georg Brandl3591a8f2009-07-26 14:44:23 +0000561 When the *timeout* argument is present and not ``None``, it should be a
562 floating point number specifying a timeout for the operation in seconds
563 (or fractions thereof).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000564
Georg Brandl3591a8f2009-07-26 14:44:23 +0000565 When the underlying lock is an :class:`RLock`, it is not released using
566 its :meth:`release` method, since this may not actually unlock the lock
567 when it was acquired multiple times recursively. Instead, an internal
568 interface of the :class:`RLock` class is used, which really unlocks it
569 even when it has been recursively acquired several times. Another internal
570 interface is then used to restore the recursion level when the lock is
571 reacquired.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000572
Eli Bendersky3a8501e2011-11-12 20:51:54 +0200573 .. method:: notify(n=1)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000574
Eli Bendersky3a8501e2011-11-12 20:51:54 +0200575 By default, wake up one thread waiting on this condition, if any. If the
576 calling thread has not acquired the lock when this method is called, a
Georg Brandl3591a8f2009-07-26 14:44:23 +0000577 :exc:`RuntimeError` is raised.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000578
Eli Bendersky3a8501e2011-11-12 20:51:54 +0200579 This method wakes up at most *n* of the threads waiting for the condition
580 variable; it is a no-op if no threads are waiting.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000581
Eli Bendersky3a8501e2011-11-12 20:51:54 +0200582 The current implementation wakes up exactly *n* threads, if at least *n*
583 threads are waiting. However, it's not safe to rely on this behavior.
584 A future, optimized implementation may occasionally wake up more than
585 *n* threads.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000586
Eli Bendersky3a8501e2011-11-12 20:51:54 +0200587 Note: an awakened thread does not actually return from its :meth:`wait`
Georg Brandl3591a8f2009-07-26 14:44:23 +0000588 call until it can reacquire the lock. Since :meth:`notify` does not
589 release the lock, its caller should.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000590
Georg Brandl3591a8f2009-07-26 14:44:23 +0000591 .. method:: notify_all()
592 notifyAll()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000593
Georg Brandl3591a8f2009-07-26 14:44:23 +0000594 Wake up all threads waiting on this condition. This method acts like
595 :meth:`notify`, but wakes up all waiting threads instead of one. If the
596 calling thread has not acquired the lock when this method is called, a
597 :exc:`RuntimeError` is raised.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000598
599
600.. _semaphore-objects:
601
602Semaphore Objects
603-----------------
604
605This is one of the oldest synchronization primitives in the history of computer
606science, invented by the early Dutch computer scientist Edsger W. Dijkstra (he
607used :meth:`P` and :meth:`V` instead of :meth:`acquire` and :meth:`release`).
608
609A semaphore manages an internal counter which is decremented by each
610:meth:`acquire` call and incremented by each :meth:`release` call. The counter
611can never go below zero; when :meth:`acquire` finds that it is zero, it blocks,
612waiting until some other thread calls :meth:`release`.
613
614
615.. class:: Semaphore([value])
616
617 The optional argument gives the initial *value* for the internal counter; it
618 defaults to ``1``. If the *value* given is less than 0, :exc:`ValueError` is
619 raised.
620
Georg Brandl3591a8f2009-07-26 14:44:23 +0000621 .. method:: acquire([blocking])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000622
Georg Brandl3591a8f2009-07-26 14:44:23 +0000623 Acquire a semaphore.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000624
Georg Brandl3591a8f2009-07-26 14:44:23 +0000625 When invoked without arguments: if the internal counter is larger than
626 zero on entry, decrement it by one and return immediately. If it is zero
627 on entry, block, waiting until some other thread has called
628 :meth:`release` to make it larger than zero. This is done with proper
629 interlocking so that if multiple :meth:`acquire` calls are blocked,
630 :meth:`release` will wake exactly one of them up. The implementation may
631 pick one at random, so the order in which blocked threads are awakened
632 should not be relied on. There is no return value in this case.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000633
Georg Brandl3591a8f2009-07-26 14:44:23 +0000634 When invoked with *blocking* set to true, do the same thing as when called
635 without arguments, and return true.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000636
Georg Brandl3591a8f2009-07-26 14:44:23 +0000637 When invoked with *blocking* set to false, do not block. If a call
638 without an argument would block, return false immediately; otherwise, do
639 the same thing as when called without arguments, and return true.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000640
Georg Brandl3591a8f2009-07-26 14:44:23 +0000641 .. method:: release()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000642
Georg Brandl3591a8f2009-07-26 14:44:23 +0000643 Release a semaphore, incrementing the internal counter by one. When it
644 was zero on entry and another thread is waiting for it to become larger
645 than zero again, wake up that thread.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000646
647
648.. _semaphore-examples:
649
650:class:`Semaphore` Example
651^^^^^^^^^^^^^^^^^^^^^^^^^^
652
653Semaphores are often used to guard resources with limited capacity, for example,
Georg Brandl335d4f52011-01-09 07:58:45 +0000654a database server. In any situation where the size of the resource is fixed,
655you should use a bounded semaphore. Before spawning any worker threads, your
656main thread would initialize the semaphore::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000657
658 maxconnections = 5
659 ...
660 pool_sema = BoundedSemaphore(value=maxconnections)
661
662Once spawned, worker threads call the semaphore's acquire and release methods
663when they need to connect to the server::
664
665 pool_sema.acquire()
666 conn = connectdb()
667 ... use connection ...
668 conn.close()
669 pool_sema.release()
670
671The use of a bounded semaphore reduces the chance that a programming error which
672causes the semaphore to be released more than it's acquired will go undetected.
673
674
675.. _event-objects:
676
677Event Objects
678-------------
679
680This is one of the simplest mechanisms for communication between threads: one
681thread signals an event and other threads wait for it.
682
683An event object manages an internal flag that can be set to true with the
Georg Brandl9fa61bb2009-07-26 14:19:57 +0000684:meth:`~Event.set` method and reset to false with the :meth:`clear` method. The
Georg Brandl8ec7f652007-08-15 14:28:01 +0000685:meth:`wait` method blocks until the flag is true.
686
687
688.. class:: Event()
689
690 The internal flag is initially false.
691
Georg Brandl3591a8f2009-07-26 14:44:23 +0000692 .. method:: is_set()
693 isSet()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000694
Georg Brandl3591a8f2009-07-26 14:44:23 +0000695 Return true if and only if the internal flag is true.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000696
Facundo Batista47b66592010-01-25 06:15:01 +0000697 .. versionchanged:: 2.6
698 The ``is_set()`` syntax is new.
699
Georg Brandl3591a8f2009-07-26 14:44:23 +0000700 .. method:: set()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000701
Georg Brandl3591a8f2009-07-26 14:44:23 +0000702 Set the internal flag to true. All threads waiting for it to become true
703 are awakened. Threads that call :meth:`wait` once the flag is true will
704 not block at all.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000705
Georg Brandl3591a8f2009-07-26 14:44:23 +0000706 .. method:: clear()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000707
Georg Brandl3591a8f2009-07-26 14:44:23 +0000708 Reset the internal flag to false. Subsequently, threads calling
709 :meth:`wait` will block until :meth:`.set` is called to set the internal
710 flag to true again.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000711
Georg Brandl3591a8f2009-07-26 14:44:23 +0000712 .. method:: wait([timeout])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000713
Georg Brandl3591a8f2009-07-26 14:44:23 +0000714 Block until the internal flag is true. If the internal flag is true on
715 entry, return immediately. Otherwise, block until another thread calls
716 :meth:`.set` to set the flag to true, or until the optional timeout
717 occurs.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000718
Georg Brandl3591a8f2009-07-26 14:44:23 +0000719 When the timeout argument is present and not ``None``, it should be a
720 floating point number specifying a timeout for the operation in seconds
721 (or fractions thereof).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000722
Georg Brandl3591a8f2009-07-26 14:44:23 +0000723 This method returns the internal flag on exit, so it will always return
724 ``True`` except if a timeout is given and the operation times out.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000725
Georg Brandl3591a8f2009-07-26 14:44:23 +0000726 .. versionchanged:: 2.7
727 Previously, the method always returned ``None``.
Georg Brandlef660e82009-03-31 20:41:08 +0000728
Georg Brandl8ec7f652007-08-15 14:28:01 +0000729
Georg Brandl8ec7f652007-08-15 14:28:01 +0000730.. _timer-objects:
731
732Timer Objects
733-------------
734
735This class represents an action that should be run only after a certain amount
736of time has passed --- a timer. :class:`Timer` is a subclass of :class:`Thread`
737and as such also functions as an example of creating custom threads.
738
739Timers are started, as with threads, by calling their :meth:`start` method. The
740timer can be stopped (before its action has begun) by calling the :meth:`cancel`
741method. The interval the timer will wait before executing its action may not be
742exactly the same as the interval specified by the user.
743
744For example::
745
746 def hello():
747 print "hello, world"
748
749 t = Timer(30.0, hello)
750 t.start() # after 30 seconds, "hello, world" will be printed
751
752
753.. class:: Timer(interval, function, args=[], kwargs={})
754
755 Create a timer that will run *function* with arguments *args* and keyword
756 arguments *kwargs*, after *interval* seconds have passed.
757
Georg Brandl3591a8f2009-07-26 14:44:23 +0000758 .. method:: cancel()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000759
Georg Brandl3591a8f2009-07-26 14:44:23 +0000760 Stop the timer, and cancel the execution of the timer's action. This will
761 only work if the timer is still in its waiting stage.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000762
763
764.. _with-locks:
765
766Using locks, conditions, and semaphores in the :keyword:`with` statement
767------------------------------------------------------------------------
768
769All of the objects provided by this module that have :meth:`acquire` and
770:meth:`release` methods can be used as context managers for a :keyword:`with`
771statement. The :meth:`acquire` method will be called when the block is entered,
772and :meth:`release` will be called when the block is exited.
773
774Currently, :class:`Lock`, :class:`RLock`, :class:`Condition`,
775:class:`Semaphore`, and :class:`BoundedSemaphore` objects may be used as
776:keyword:`with` statement context managers. For example::
777
Georg Brandl8ec7f652007-08-15 14:28:01 +0000778 import threading
779
780 some_rlock = threading.RLock()
781
782 with some_rlock:
783 print "some_rlock is locked while this executes"
784
Georg Brandl2e255512008-03-13 07:21:41 +0000785
786.. _threaded-imports:
787
788Importing in threaded code
789--------------------------
790
Georg Brandl837fbb02010-11-26 07:58:55 +0000791While the import machinery is thread-safe, there are two key restrictions on
792threaded imports due to inherent limitations in the way that thread-safety is
793provided:
Georg Brandl2e255512008-03-13 07:21:41 +0000794
795* Firstly, other than in the main module, an import should not have the
796 side effect of spawning a new thread and then waiting for that thread in
797 any way. Failing to abide by this restriction can lead to a deadlock if
798 the spawned thread directly or indirectly attempts to import a module.
799* Secondly, all import attempts must be completed before the interpreter
800 starts shutting itself down. This can be most easily achieved by only
801 performing imports from non-daemon threads created through the threading
802 module. Daemon threads and threads created directly with the thread
803 module will require some other form of synchronization to ensure they do
804 not attempt imports after system shutdown has commenced. Failure to
805 abide by this restriction will lead to intermittent exceptions and
806 crashes during interpreter shutdown (as the late imports attempt to
807 access machinery which is no longer in a valid state).