blob: 9e56dc0ed89ae71e8977474f014405a3b81b8e9a [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
Ezio Melotti9e0f4622013-01-18 19:55:46 +020034 In CPython, due to the :term:`Global Interpreter Lock`, only one thread
Antoine Pitrou9f41bb32011-01-06 16:35:14 +000035 can execute Python code at once (even though certain performance-oriented
36 libraries might overcome this limitation).
Ezio Melotti9e0f4622013-01-18 19:55:46 +020037 If you want your application to make better use of the computational
Antoine Pitrou9f41bb32011-01-06 16:35:14 +000038 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
Serhiy Storchakac8f26f52013-08-24 00:28:38 +0300170 :meth:`~Thread.run` method is called.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000171
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
Serhiy Storchakac8f26f52013-08-24 00:28:38 +0300181 :meth:`~Thread.run` method is called.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000182
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
Antoine Pitrouf1575712013-02-15 21:27:18 +0100250.. note::
251 Daemon threads are abruptly stopped at shutdown. Their resources (such
252 as open files, database transactions, etc.) may not be released properly.
253 If you want your threads to stop gracefully, make them non-daemonic and
254 use a suitable signalling mechanism such as an :class:`Event`.
255
Georg Brandl01ba86a2008-11-06 10:20:49 +0000256There is a "main thread" object; this corresponds to the initial thread of
257control in the Python program. It is not a daemon thread.
258
259There is the possibility that "dummy thread objects" are created. These are
260thread objects corresponding to "alien threads", which are threads of control
261started outside the threading module, such as directly from C code. Dummy
262thread objects have limited functionality; they are always considered alive and
263daemonic, and cannot be :meth:`join`\ ed. They are never deleted, since it is
264impossible to detect the termination of alien threads.
265
266
267.. class:: Thread(group=None, target=None, name=None, args=(), kwargs={})
268
Georg Brandl3591a8f2009-07-26 14:44:23 +0000269 This constructor should always be called with keyword arguments. Arguments
270 are:
Georg Brandl01ba86a2008-11-06 10:20:49 +0000271
272 *group* should be ``None``; reserved for future extension when a
273 :class:`ThreadGroup` class is implemented.
274
275 *target* is the callable object to be invoked by the :meth:`run` method.
276 Defaults to ``None``, meaning nothing is called.
277
Georg Brandl3591a8f2009-07-26 14:44:23 +0000278 *name* is the thread name. By default, a unique name is constructed of the
279 form "Thread-*N*" where *N* is a small decimal number.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000280
281 *args* is the argument tuple for the target invocation. Defaults to ``()``.
282
283 *kwargs* is a dictionary of keyword arguments for the target invocation.
284 Defaults to ``{}``.
285
Georg Brandl3591a8f2009-07-26 14:44:23 +0000286 If the subclass overrides the constructor, it must make sure to invoke the
287 base class constructor (``Thread.__init__()``) before doing anything else to
288 the thread.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000289
Georg Brandl3591a8f2009-07-26 14:44:23 +0000290 .. method:: start()
Georg Brandl01ba86a2008-11-06 10:20:49 +0000291
Georg Brandl3591a8f2009-07-26 14:44:23 +0000292 Start the thread's activity.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000293
Georg Brandl3591a8f2009-07-26 14:44:23 +0000294 It must be called at most once per thread object. It arranges for the
295 object's :meth:`run` method to be invoked in a separate thread of control.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000296
Brian Curtin37c4a722011-01-31 19:55:14 +0000297 This method will raise a :exc:`RuntimeError` if called more than once
Georg Brandl3591a8f2009-07-26 14:44:23 +0000298 on the same thread object.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000299
Georg Brandl3591a8f2009-07-26 14:44:23 +0000300 .. method:: run()
Georg Brandl01ba86a2008-11-06 10:20:49 +0000301
Georg Brandl3591a8f2009-07-26 14:44:23 +0000302 Method representing the thread's activity.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000303
Georg Brandl3591a8f2009-07-26 14:44:23 +0000304 You may override this method in a subclass. The standard :meth:`run`
305 method invokes the callable object passed to the object's constructor as
306 the *target* argument, if any, with sequential and keyword arguments taken
307 from the *args* and *kwargs* arguments, respectively.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000308
Georg Brandl3591a8f2009-07-26 14:44:23 +0000309 .. method:: join([timeout])
Georg Brandl01ba86a2008-11-06 10:20:49 +0000310
Georg Brandl3591a8f2009-07-26 14:44:23 +0000311 Wait until the thread terminates. This blocks the calling thread until the
312 thread whose :meth:`join` method is called terminates -- either normally
313 or through an unhandled exception -- or until the optional timeout occurs.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000314
Georg Brandl3591a8f2009-07-26 14:44:23 +0000315 When the *timeout* argument is present and not ``None``, it should be a
316 floating point number specifying a timeout for the operation in seconds
317 (or fractions thereof). As :meth:`join` always returns ``None``, you must
318 call :meth:`isAlive` after :meth:`join` to decide whether a timeout
319 happened -- if the thread is still alive, the :meth:`join` call timed out.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000320
Georg Brandl3591a8f2009-07-26 14:44:23 +0000321 When the *timeout* argument is not present or ``None``, the operation will
322 block until the thread terminates.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000323
Georg Brandl3591a8f2009-07-26 14:44:23 +0000324 A thread can be :meth:`join`\ ed many times.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000325
Georg Brandl3591a8f2009-07-26 14:44:23 +0000326 :meth:`join` raises a :exc:`RuntimeError` if an attempt is made to join
327 the current thread as that would cause a deadlock. It is also an error to
328 :meth:`join` a thread before it has been started and attempts to do so
329 raises the same exception.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000330
Georg Brandl3591a8f2009-07-26 14:44:23 +0000331 .. method:: getName()
332 setName()
Georg Brandl01ba86a2008-11-06 10:20:49 +0000333
Georg Brandl3591a8f2009-07-26 14:44:23 +0000334 Old API for :attr:`~Thread.name`.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000335
Georg Brandl3591a8f2009-07-26 14:44:23 +0000336 .. attribute:: name
Georg Brandl01ba86a2008-11-06 10:20:49 +0000337
Georg Brandl3591a8f2009-07-26 14:44:23 +0000338 A string used for identification purposes only. It has no semantics.
339 Multiple threads may be given the same name. The initial name is set by
340 the constructor.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000341
Georg Brandl3591a8f2009-07-26 14:44:23 +0000342 .. attribute:: ident
Georg Brandl01ba86a2008-11-06 10:20:49 +0000343
Georg Brandl3591a8f2009-07-26 14:44:23 +0000344 The 'thread identifier' of this thread or ``None`` if the thread has not
345 been started. This is a nonzero integer. See the
346 :func:`thread.get_ident()` function. Thread identifiers may be recycled
347 when a thread exits and another thread is created. The identifier is
348 available even after the thread has exited.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000349
Georg Brandl3591a8f2009-07-26 14:44:23 +0000350 .. versionadded:: 2.6
Georg Brandl01ba86a2008-11-06 10:20:49 +0000351
Georg Brandl3591a8f2009-07-26 14:44:23 +0000352 .. method:: is_alive()
353 isAlive()
Georg Brandl01ba86a2008-11-06 10:20:49 +0000354
Georg Brandl3591a8f2009-07-26 14:44:23 +0000355 Return whether the thread is alive.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000356
Brett Cannon11a30612010-07-23 12:30:10 +0000357 This method returns ``True`` just before the :meth:`run` method starts
358 until just after the :meth:`run` method terminates. The module function
Georg Brandlf4da6662009-09-19 12:04:16 +0000359 :func:`.enumerate` returns a list of all alive threads.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000360
Georg Brandl3591a8f2009-07-26 14:44:23 +0000361 .. method:: isDaemon()
362 setDaemon()
Georg Brandl01ba86a2008-11-06 10:20:49 +0000363
Georg Brandl3591a8f2009-07-26 14:44:23 +0000364 Old API for :attr:`~Thread.daemon`.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000365
Georg Brandl3591a8f2009-07-26 14:44:23 +0000366 .. attribute:: daemon
Georg Brandl01ba86a2008-11-06 10:20:49 +0000367
Georg Brandl3591a8f2009-07-26 14:44:23 +0000368 A boolean value indicating whether this thread is a daemon thread (True)
369 or not (False). This must be set before :meth:`start` is called,
370 otherwise :exc:`RuntimeError` is raised. Its initial value is inherited
371 from the creating thread; the main thread is not a daemon thread and
372 therefore all threads created in the main thread default to :attr:`daemon`
373 = ``False``.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000374
Georg Brandl3591a8f2009-07-26 14:44:23 +0000375 The entire Python program exits when no alive non-daemon threads are left.
Georg Brandl01ba86a2008-11-06 10:20:49 +0000376
377
Georg Brandl8ec7f652007-08-15 14:28:01 +0000378.. _lock-objects:
379
380Lock Objects
381------------
382
383A primitive lock is a synchronization primitive that is not owned by a
384particular thread when locked. In Python, it is currently the lowest level
385synchronization primitive available, implemented directly by the :mod:`thread`
386extension module.
387
388A primitive lock is in one of two states, "locked" or "unlocked". It is created
389in the unlocked state. It has two basic methods, :meth:`acquire` and
390:meth:`release`. When the state is unlocked, :meth:`acquire` changes the state
391to locked and returns immediately. When the state is locked, :meth:`acquire`
392blocks until a call to :meth:`release` in another thread changes it to unlocked,
393then the :meth:`acquire` call resets it to locked and returns. The
394:meth:`release` method should only be called in the locked state; it changes the
395state to unlocked and returns immediately. If an attempt is made to release an
396unlocked lock, a :exc:`RuntimeError` will be raised.
397
398When more than one thread is blocked in :meth:`acquire` waiting for the state to
399turn to unlocked, only one thread proceeds when a :meth:`release` call resets
400the state to unlocked; which one of the waiting threads proceeds is not defined,
401and may vary across implementations.
402
403All methods are executed atomically.
404
405
Terry Reedyc0b35442011-01-01 00:36:18 +0000406.. method:: Lock.acquire([blocking])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000407
408 Acquire a lock, blocking or non-blocking.
409
R David Murray1bddab72012-05-17 09:15:02 -0400410 When invoked with the *blocking* argument set to ``True`` (the default),
411 block until the lock is unlocked, then set it to locked and return ``True``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000412
R David Murray1bddab72012-05-17 09:15:02 -0400413 When invoked with the *blocking* argument set to ``False``, do not block.
414 If a call with *blocking* set to ``True`` would block, return ``False``
415 immediately; otherwise, set the lock to locked and return ``True``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000416
417
418.. method:: Lock.release()
419
420 Release a lock.
421
422 When the lock is locked, reset it to unlocked, and return. If any other threads
423 are blocked waiting for the lock to become unlocked, allow exactly one of them
424 to proceed.
425
Sandro Tosiceeb47d2012-04-05 22:51:00 +0200426 When invoked on an unlocked lock, a :exc:`ThreadError` is raised.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000427
428 There is no return value.
429
430
431.. _rlock-objects:
432
433RLock Objects
434-------------
435
436A reentrant lock is a synchronization primitive that may be acquired multiple
437times by the same thread. Internally, it uses the concepts of "owning thread"
438and "recursion level" in addition to the locked/unlocked state used by primitive
439locks. In the locked state, some thread owns the lock; in the unlocked state,
440no thread owns it.
441
442To lock the lock, a thread calls its :meth:`acquire` method; this returns once
443the thread owns the lock. To unlock the lock, a thread calls its
444:meth:`release` method. :meth:`acquire`/:meth:`release` call pairs may be
445nested; only the final :meth:`release` (the :meth:`release` of the outermost
446pair) resets the lock to unlocked and allows another thread blocked in
447:meth:`acquire` to proceed.
448
449
450.. method:: RLock.acquire([blocking=1])
451
452 Acquire a lock, blocking or non-blocking.
453
454 When invoked without arguments: if this thread already owns the lock, increment
455 the recursion level by one, and return immediately. Otherwise, if another
456 thread owns the lock, block until the lock is unlocked. Once the lock is
457 unlocked (not owned by any thread), then grab ownership, set the recursion level
458 to one, and return. If more than one thread is blocked waiting until the lock
459 is unlocked, only one at a time will be able to grab ownership of the lock.
460 There is no return value in this case.
461
462 When invoked with the *blocking* argument set to true, do the same thing as when
463 called without arguments, and return true.
464
465 When invoked with the *blocking* argument set to false, do not block. If a call
466 without an argument would block, return false immediately; otherwise, do the
467 same thing as when called without arguments, and return true.
468
469
470.. method:: RLock.release()
471
472 Release a lock, decrementing the recursion level. If after the decrement it is
473 zero, reset the lock to unlocked (not owned by any thread), and if any other
474 threads are blocked waiting for the lock to become unlocked, allow exactly one
475 of them to proceed. If after the decrement the recursion level is still
476 nonzero, the lock remains locked and owned by the calling thread.
477
478 Only call this method when the calling thread owns the lock. A
479 :exc:`RuntimeError` is raised if this method is called when the lock is
480 unlocked.
481
482 There is no return value.
483
484
485.. _condition-objects:
486
487Condition Objects
488-----------------
489
490A condition variable is always associated with some kind of lock; this can be
491passed in or one will be created by default. (Passing one in is useful when
492several condition variables must share the same lock.)
493
494A condition variable has :meth:`acquire` and :meth:`release` methods that call
495the corresponding methods of the associated lock. It also has a :meth:`wait`
496method, and :meth:`notify` and :meth:`notifyAll` methods. These three must only
497be called when the calling thread has acquired the lock, otherwise a
498:exc:`RuntimeError` is raised.
499
500The :meth:`wait` method releases the lock, and then blocks until it is awakened
501by a :meth:`notify` or :meth:`notifyAll` call for the same condition variable in
502another thread. Once awakened, it re-acquires the lock and returns. It is also
503possible to specify a timeout.
504
505The :meth:`notify` method wakes up one of the threads waiting for the condition
506variable, if any are waiting. The :meth:`notifyAll` method wakes up all threads
507waiting for the condition variable.
508
509Note: the :meth:`notify` and :meth:`notifyAll` methods don't release the lock;
510this means that the thread or threads awakened will not return from their
511:meth:`wait` call immediately, but only when the thread that called
512:meth:`notify` or :meth:`notifyAll` finally relinquishes ownership of the lock.
513
514Tip: the typical programming style using condition variables uses the lock to
515synchronize access to some shared state; threads that are interested in a
516particular change of state call :meth:`wait` repeatedly until they see the
517desired state, while threads that modify the state call :meth:`notify` or
518:meth:`notifyAll` when they change the state in such a way that it could
519possibly be a desired state for one of the waiters. For example, the following
520code is a generic producer-consumer situation with unlimited buffer capacity::
521
522 # Consume one item
523 cv.acquire()
524 while not an_item_is_available():
525 cv.wait()
526 get_an_available_item()
527 cv.release()
528
529 # Produce one item
530 cv.acquire()
531 make_an_item_available()
532 cv.notify()
533 cv.release()
534
535To choose between :meth:`notify` and :meth:`notifyAll`, consider whether one
536state change can be interesting for only one or several waiting threads. E.g.
537in a typical producer-consumer situation, adding one item to the buffer only
538needs to wake up one consumer thread.
539
540
541.. class:: Condition([lock])
542
Georg Brandl3591a8f2009-07-26 14:44:23 +0000543 If the *lock* argument is given and not ``None``, it must be a :class:`Lock`
544 or :class:`RLock` object, and it is used as the underlying lock. Otherwise,
545 a new :class:`RLock` object is created and used as the underlying lock.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000546
Georg Brandl3591a8f2009-07-26 14:44:23 +0000547 .. method:: acquire(*args)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000548
Georg Brandl3591a8f2009-07-26 14:44:23 +0000549 Acquire the underlying lock. This method calls the corresponding method on
550 the underlying lock; the return value is whatever that method returns.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000551
Georg Brandl3591a8f2009-07-26 14:44:23 +0000552 .. method:: release()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000553
Georg Brandl3591a8f2009-07-26 14:44:23 +0000554 Release the underlying lock. This method calls the corresponding method on
555 the underlying lock; there is no return value.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000556
Georg Brandl3591a8f2009-07-26 14:44:23 +0000557 .. method:: wait([timeout])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000558
Georg Brandl3591a8f2009-07-26 14:44:23 +0000559 Wait until notified or until a timeout occurs. If the calling thread has not
560 acquired the lock when this method is called, a :exc:`RuntimeError` is raised.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000561
Georg Brandl3591a8f2009-07-26 14:44:23 +0000562 This method releases the underlying lock, and then blocks until it is
563 awakened by a :meth:`notify` or :meth:`notifyAll` call for the same
564 condition variable in another thread, or until the optional timeout
565 occurs. Once awakened or timed out, it re-acquires the lock and returns.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000566
Georg Brandl3591a8f2009-07-26 14:44:23 +0000567 When the *timeout* argument is present and not ``None``, it should be a
568 floating point number specifying a timeout for the operation in seconds
569 (or fractions thereof).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000570
Georg Brandl3591a8f2009-07-26 14:44:23 +0000571 When the underlying lock is an :class:`RLock`, it is not released using
572 its :meth:`release` method, since this may not actually unlock the lock
573 when it was acquired multiple times recursively. Instead, an internal
574 interface of the :class:`RLock` class is used, which really unlocks it
575 even when it has been recursively acquired several times. Another internal
576 interface is then used to restore the recursion level when the lock is
577 reacquired.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000578
Eli Bendersky3a8501e2011-11-12 20:51:54 +0200579 .. method:: notify(n=1)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000580
Eli Bendersky3a8501e2011-11-12 20:51:54 +0200581 By default, wake up one thread waiting on this condition, if any. If the
582 calling thread has not acquired the lock when this method is called, a
Georg Brandl3591a8f2009-07-26 14:44:23 +0000583 :exc:`RuntimeError` is raised.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000584
Eli Bendersky3a8501e2011-11-12 20:51:54 +0200585 This method wakes up at most *n* of the threads waiting for the condition
586 variable; it is a no-op if no threads are waiting.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000587
Eli Bendersky3a8501e2011-11-12 20:51:54 +0200588 The current implementation wakes up exactly *n* threads, if at least *n*
589 threads are waiting. However, it's not safe to rely on this behavior.
590 A future, optimized implementation may occasionally wake up more than
591 *n* threads.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000592
Eli Bendersky3a8501e2011-11-12 20:51:54 +0200593 Note: an awakened thread does not actually return from its :meth:`wait`
Georg Brandl3591a8f2009-07-26 14:44:23 +0000594 call until it can reacquire the lock. Since :meth:`notify` does not
595 release the lock, its caller should.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000596
Georg Brandl3591a8f2009-07-26 14:44:23 +0000597 .. method:: notify_all()
598 notifyAll()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000599
Georg Brandl3591a8f2009-07-26 14:44:23 +0000600 Wake up all threads waiting on this condition. This method acts like
601 :meth:`notify`, but wakes up all waiting threads instead of one. If the
602 calling thread has not acquired the lock when this method is called, a
603 :exc:`RuntimeError` is raised.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000604
605
606.. _semaphore-objects:
607
608Semaphore Objects
609-----------------
610
611This is one of the oldest synchronization primitives in the history of computer
612science, invented by the early Dutch computer scientist Edsger W. Dijkstra (he
613used :meth:`P` and :meth:`V` instead of :meth:`acquire` and :meth:`release`).
614
615A semaphore manages an internal counter which is decremented by each
616:meth:`acquire` call and incremented by each :meth:`release` call. The counter
617can never go below zero; when :meth:`acquire` finds that it is zero, it blocks,
618waiting until some other thread calls :meth:`release`.
619
620
621.. class:: Semaphore([value])
622
623 The optional argument gives the initial *value* for the internal counter; it
624 defaults to ``1``. If the *value* given is less than 0, :exc:`ValueError` is
625 raised.
626
Georg Brandl3591a8f2009-07-26 14:44:23 +0000627 .. method:: acquire([blocking])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000628
Georg Brandl3591a8f2009-07-26 14:44:23 +0000629 Acquire a semaphore.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000630
Georg Brandl3591a8f2009-07-26 14:44:23 +0000631 When invoked without arguments: if the internal counter is larger than
632 zero on entry, decrement it by one and return immediately. If it is zero
633 on entry, block, waiting until some other thread has called
634 :meth:`release` to make it larger than zero. This is done with proper
635 interlocking so that if multiple :meth:`acquire` calls are blocked,
636 :meth:`release` will wake exactly one of them up. The implementation may
637 pick one at random, so the order in which blocked threads are awakened
638 should not be relied on. There is no return value in this case.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000639
Georg Brandl3591a8f2009-07-26 14:44:23 +0000640 When invoked with *blocking* set to true, do the same thing as when called
641 without arguments, and return true.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000642
Georg Brandl3591a8f2009-07-26 14:44:23 +0000643 When invoked with *blocking* set to false, do not block. If a call
644 without an argument would block, return false immediately; otherwise, do
645 the same thing as when called without arguments, and return true.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000646
Georg Brandl3591a8f2009-07-26 14:44:23 +0000647 .. method:: release()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000648
Georg Brandl3591a8f2009-07-26 14:44:23 +0000649 Release a semaphore, incrementing the internal counter by one. When it
650 was zero on entry and another thread is waiting for it to become larger
651 than zero again, wake up that thread.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000652
653
654.. _semaphore-examples:
655
656:class:`Semaphore` Example
657^^^^^^^^^^^^^^^^^^^^^^^^^^
658
659Semaphores are often used to guard resources with limited capacity, for example,
Georg Brandl335d4f52011-01-09 07:58:45 +0000660a database server. In any situation where the size of the resource is fixed,
661you should use a bounded semaphore. Before spawning any worker threads, your
662main thread would initialize the semaphore::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000663
664 maxconnections = 5
665 ...
666 pool_sema = BoundedSemaphore(value=maxconnections)
667
668Once spawned, worker threads call the semaphore's acquire and release methods
669when they need to connect to the server::
670
671 pool_sema.acquire()
672 conn = connectdb()
673 ... use connection ...
674 conn.close()
675 pool_sema.release()
676
677The use of a bounded semaphore reduces the chance that a programming error which
678causes the semaphore to be released more than it's acquired will go undetected.
679
680
681.. _event-objects:
682
683Event Objects
684-------------
685
686This is one of the simplest mechanisms for communication between threads: one
687thread signals an event and other threads wait for it.
688
689An event object manages an internal flag that can be set to true with the
Georg Brandl9fa61bb2009-07-26 14:19:57 +0000690:meth:`~Event.set` method and reset to false with the :meth:`clear` method. The
Georg Brandl8ec7f652007-08-15 14:28:01 +0000691:meth:`wait` method blocks until the flag is true.
692
693
694.. class:: Event()
695
696 The internal flag is initially false.
697
Georg Brandl3591a8f2009-07-26 14:44:23 +0000698 .. method:: is_set()
699 isSet()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000700
Georg Brandl3591a8f2009-07-26 14:44:23 +0000701 Return true if and only if the internal flag is true.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000702
Facundo Batista47b66592010-01-25 06:15:01 +0000703 .. versionchanged:: 2.6
704 The ``is_set()`` syntax is new.
705
Georg Brandl3591a8f2009-07-26 14:44:23 +0000706 .. method:: set()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000707
Georg Brandl3591a8f2009-07-26 14:44:23 +0000708 Set the internal flag to true. All threads waiting for it to become true
709 are awakened. Threads that call :meth:`wait` once the flag is true will
710 not block at all.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000711
Georg Brandl3591a8f2009-07-26 14:44:23 +0000712 .. method:: clear()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000713
Georg Brandl3591a8f2009-07-26 14:44:23 +0000714 Reset the internal flag to false. Subsequently, threads calling
715 :meth:`wait` will block until :meth:`.set` is called to set the internal
716 flag to true again.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000717
Georg Brandl3591a8f2009-07-26 14:44:23 +0000718 .. method:: wait([timeout])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000719
Georg Brandl3591a8f2009-07-26 14:44:23 +0000720 Block until the internal flag is true. If the internal flag is true on
721 entry, return immediately. Otherwise, block until another thread calls
722 :meth:`.set` to set the flag to true, or until the optional timeout
723 occurs.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000724
Georg Brandl3591a8f2009-07-26 14:44:23 +0000725 When the timeout argument is present and not ``None``, it should be a
726 floating point number specifying a timeout for the operation in seconds
727 (or fractions thereof).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000728
Georg Brandl3591a8f2009-07-26 14:44:23 +0000729 This method returns the internal flag on exit, so it will always return
730 ``True`` except if a timeout is given and the operation times out.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000731
Georg Brandl3591a8f2009-07-26 14:44:23 +0000732 .. versionchanged:: 2.7
733 Previously, the method always returned ``None``.
Georg Brandlef660e82009-03-31 20:41:08 +0000734
Georg Brandl8ec7f652007-08-15 14:28:01 +0000735
Georg Brandl8ec7f652007-08-15 14:28:01 +0000736.. _timer-objects:
737
738Timer Objects
739-------------
740
741This class represents an action that should be run only after a certain amount
742of time has passed --- a timer. :class:`Timer` is a subclass of :class:`Thread`
743and as such also functions as an example of creating custom threads.
744
Serhiy Storchakac8f26f52013-08-24 00:28:38 +0300745Timers are started, as with threads, by calling their :meth:`~Timer.start`
746method. The timer can be stopped (before its action has begun) by calling the
747:meth:`~Timer.cancel` method. The interval the timer will wait before
748executing its action may not be exactly the same as the interval specified by
749the user.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000750
751For example::
752
753 def hello():
754 print "hello, world"
755
756 t = Timer(30.0, hello)
757 t.start() # after 30 seconds, "hello, world" will be printed
758
759
760.. class:: Timer(interval, function, args=[], kwargs={})
761
762 Create a timer that will run *function* with arguments *args* and keyword
763 arguments *kwargs*, after *interval* seconds have passed.
764
Georg Brandl3591a8f2009-07-26 14:44:23 +0000765 .. method:: cancel()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000766
Georg Brandl3591a8f2009-07-26 14:44:23 +0000767 Stop the timer, and cancel the execution of the timer's action. This will
768 only work if the timer is still in its waiting stage.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000769
770
771.. _with-locks:
772
773Using locks, conditions, and semaphores in the :keyword:`with` statement
774------------------------------------------------------------------------
775
776All of the objects provided by this module that have :meth:`acquire` and
777:meth:`release` methods can be used as context managers for a :keyword:`with`
778statement. The :meth:`acquire` method will be called when the block is entered,
779and :meth:`release` will be called when the block is exited.
780
781Currently, :class:`Lock`, :class:`RLock`, :class:`Condition`,
782:class:`Semaphore`, and :class:`BoundedSemaphore` objects may be used as
783:keyword:`with` statement context managers. For example::
784
Georg Brandl8ec7f652007-08-15 14:28:01 +0000785 import threading
786
787 some_rlock = threading.RLock()
788
789 with some_rlock:
790 print "some_rlock is locked while this executes"
791
Georg Brandl2e255512008-03-13 07:21:41 +0000792
793.. _threaded-imports:
794
795Importing in threaded code
796--------------------------
797
Georg Brandl837fbb02010-11-26 07:58:55 +0000798While the import machinery is thread-safe, there are two key restrictions on
799threaded imports due to inherent limitations in the way that thread-safety is
800provided:
Georg Brandl2e255512008-03-13 07:21:41 +0000801
802* Firstly, other than in the main module, an import should not have the
803 side effect of spawning a new thread and then waiting for that thread in
804 any way. Failing to abide by this restriction can lead to a deadlock if
805 the spawned thread directly or indirectly attempts to import a module.
806* Secondly, all import attempts must be completed before the interpreter
807 starts shutting itself down. This can be most easily achieved by only
808 performing imports from non-daemon threads created through the threading
809 module. Daemon threads and threads created directly with the thread
810 module will require some other form of synchronization to ensure they do
811 not attempt imports after system shutdown has commenced. Failure to
812 abide by this restriction will lead to intermittent exceptions and
813 crashes during interpreter shutdown (as the late imports attempt to
814 access machinery which is no longer in a valid state).