blob: 74c99762d4ca5661a6c5b5c7c851eafe53c5c150 [file] [log] [blame]
Antoine Pitrou64a467d2010-12-12 20:34:49 +00001:mod:`threading` --- Thread-based parallelism
2=============================================
Georg Brandl116aa622007-08-15 14:28:22 +00003
4.. module:: threading
Antoine Pitrou64a467d2010-12-12 20:34:49 +00005 :synopsis: Thread-based parallelism.
Georg Brandl116aa622007-08-15 14:28:22 +00006
7
Georg Brandl2067bfd2008-05-25 13:05:15 +00008This module constructs higher-level threading interfaces on top of the lower
9level :mod:`_thread` module. See also the :mod:`queue` module.
Georg Brandl116aa622007-08-15 14:28:22 +000010
11The :mod:`dummy_threading` module is provided for situations where
Georg Brandl2067bfd2008-05-25 13:05:15 +000012:mod:`threading` cannot be used because :mod:`_thread` is missing.
Georg Brandl116aa622007-08-15 14:28:22 +000013
Benjamin Peterson8bdd5452008-08-18 22:38:41 +000014.. note::
15
Benjamin Petersonb3085c92008-09-01 23:09:31 +000016 While they are not listed below, the ``camelCase`` names used for some
17 methods and functions in this module in the Python 2.x series are still
18 supported by this module.
Benjamin Peterson8bdd5452008-08-18 22:38:41 +000019
Antoine Pitrou00342812011-01-06 16:31:28 +000020.. impl-detail::
21
22 Due to the :term:`Global Interpreter Lock`, in CPython only one thread
23 can execute Python code at once (even though certain performance-oriented
24 libraries might overcome this limitation).
25 If you want your application to make better of use of the computational
26 resources of multi-core machines, you are advised to use
27 :mod:`multiprocessing` or :class:`concurrent.futures.ProcessPoolExecutor`.
28 However, threading is still an appropriate model if you want to run
29 multiple I/O-bound tasks simultaneously.
30
Éric Araujo6e6cb8e2010-11-16 19:13:50 +000031.. seealso::
32
33 Latest version of the :source:`threading module Python source code
34 <Lib/threading.py>`
35
Antoine Pitrou00342812011-01-06 16:31:28 +000036
Georg Brandl116aa622007-08-15 14:28:22 +000037This module defines the following functions and objects:
38
39
Benjamin Peterson672b8032008-06-11 19:14:14 +000040.. function:: active_count()
Georg Brandl116aa622007-08-15 14:28:22 +000041
42 Return the number of :class:`Thread` objects currently alive. The returned
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +000043 count is equal to the length of the list returned by :func:`.enumerate`.
Georg Brandl116aa622007-08-15 14:28:22 +000044
45
46.. function:: Condition()
47 :noindex:
48
49 A factory function that returns a new condition variable object. A condition
50 variable allows one or more threads to wait until they are notified by another
51 thread.
52
Georg Brandl179249f2010-08-26 14:30:15 +000053 See :ref:`condition-objects`.
54
Georg Brandl116aa622007-08-15 14:28:22 +000055
Benjamin Peterson672b8032008-06-11 19:14:14 +000056.. function:: current_thread()
Georg Brandl116aa622007-08-15 14:28:22 +000057
58 Return the current :class:`Thread` object, corresponding to the caller's thread
59 of control. If the caller's thread of control was not created through the
60 :mod:`threading` module, a dummy thread object with limited functionality is
61 returned.
62
63
64.. function:: enumerate()
65
Benjamin Peterson672b8032008-06-11 19:14:14 +000066 Return a list of all :class:`Thread` objects currently alive. The list
67 includes daemonic threads, dummy thread objects created by
68 :func:`current_thread`, and the main thread. It excludes terminated threads
69 and threads that have not yet been started.
Georg Brandl116aa622007-08-15 14:28:22 +000070
71
72.. function:: Event()
73 :noindex:
74
75 A factory function that returns a new event object. An event manages a flag
Georg Brandl502d9a52009-07-26 15:02:41 +000076 that can be set to true with the :meth:`~Event.set` method and reset to false
77 with the :meth:`clear` method. The :meth:`wait` method blocks until the flag
78 is true.
Georg Brandl116aa622007-08-15 14:28:22 +000079
Georg Brandl179249f2010-08-26 14:30:15 +000080 See :ref:`event-objects`.
81
Georg Brandl116aa622007-08-15 14:28:22 +000082
83.. class:: local
84
85 A class that represents thread-local data. Thread-local data are data whose
86 values are thread specific. To manage thread-local data, just create an
87 instance of :class:`local` (or a subclass) and store attributes on it::
88
89 mydata = threading.local()
90 mydata.x = 1
91
92 The instance's values will be different for separate threads.
93
94 For more details and extensive examples, see the documentation string of the
95 :mod:`_threading_local` module.
96
Georg Brandl116aa622007-08-15 14:28:22 +000097
98.. function:: Lock()
99
100 A factory function that returns a new primitive lock object. Once a thread has
101 acquired it, subsequent attempts to acquire it block, until it is released; any
102 thread may release it.
103
Georg Brandl179249f2010-08-26 14:30:15 +0000104 See :ref:`lock-objects`.
105
Georg Brandl116aa622007-08-15 14:28:22 +0000106
107.. function:: RLock()
108
109 A factory function that returns a new reentrant lock object. A reentrant lock
110 must be released by the thread that acquired it. Once a thread has acquired a
111 reentrant lock, the same thread may acquire it again without blocking; the
112 thread must release it once for each time it has acquired it.
113
Georg Brandl179249f2010-08-26 14:30:15 +0000114 See :ref:`rlock-objects`.
115
Georg Brandl116aa622007-08-15 14:28:22 +0000116
Georg Brandl7f01a132009-09-16 15:58:14 +0000117.. function:: Semaphore(value=1)
Georg Brandl116aa622007-08-15 14:28:22 +0000118 :noindex:
119
120 A factory function that returns a new semaphore object. A semaphore manages a
121 counter representing the number of :meth:`release` calls minus the number of
122 :meth:`acquire` calls, plus an initial value. The :meth:`acquire` method blocks
123 if necessary until it can return without making the counter negative. If not
124 given, *value* defaults to 1.
125
Georg Brandl179249f2010-08-26 14:30:15 +0000126 See :ref:`semaphore-objects`.
127
Georg Brandl116aa622007-08-15 14:28:22 +0000128
Georg Brandl7f01a132009-09-16 15:58:14 +0000129.. function:: BoundedSemaphore(value=1)
Georg Brandl116aa622007-08-15 14:28:22 +0000130
131 A factory function that returns a new bounded semaphore object. A bounded
132 semaphore checks to make sure its current value doesn't exceed its initial
133 value. If it does, :exc:`ValueError` is raised. In most situations semaphores
134 are used to guard resources with limited capacity. If the semaphore is released
135 too many times it's a sign of a bug. If not given, *value* defaults to 1.
136
137
138.. class:: Thread
Georg Brandl179249f2010-08-26 14:30:15 +0000139 :noindex:
Georg Brandl116aa622007-08-15 14:28:22 +0000140
141 A class that represents a thread of control. This class can be safely
142 subclassed in a limited fashion.
143
Georg Brandl179249f2010-08-26 14:30:15 +0000144 See :ref:`thread-objects`.
145
Georg Brandl116aa622007-08-15 14:28:22 +0000146
147.. class:: Timer
Georg Brandl179249f2010-08-26 14:30:15 +0000148 :noindex:
Georg Brandl116aa622007-08-15 14:28:22 +0000149
150 A thread that executes a function after a specified interval has passed.
151
Georg Brandl179249f2010-08-26 14:30:15 +0000152 See :ref:`timer-objects`.
153
Georg Brandl116aa622007-08-15 14:28:22 +0000154
155.. function:: settrace(func)
156
157 .. index:: single: trace function
158
159 Set a trace function for all threads started from the :mod:`threading` module.
160 The *func* will be passed to :func:`sys.settrace` for each thread, before its
161 :meth:`run` method is called.
162
Georg Brandl116aa622007-08-15 14:28:22 +0000163
164.. function:: setprofile(func)
165
166 .. index:: single: profile function
167
168 Set a profile function for all threads started from the :mod:`threading` module.
169 The *func* will be passed to :func:`sys.setprofile` for each thread, before its
170 :meth:`run` method is called.
171
Georg Brandl116aa622007-08-15 14:28:22 +0000172
173.. function:: stack_size([size])
174
175 Return the thread stack size used when creating new threads. The optional
176 *size* argument specifies the stack size to be used for subsequently created
177 threads, and must be 0 (use platform or configured default) or a positive
178 integer value of at least 32,768 (32kB). If changing the thread stack size is
179 unsupported, a :exc:`ThreadError` is raised. If the specified stack size is
180 invalid, a :exc:`ValueError` is raised and the stack size is unmodified. 32kB
181 is currently the minimum supported stack size value to guarantee sufficient
182 stack space for the interpreter itself. Note that some platforms may have
183 particular restrictions on values for the stack size, such as requiring a
184 minimum stack size > 32kB or requiring allocation in multiples of the system
185 memory page size - platform documentation should be referred to for more
186 information (4kB pages are common; using multiples of 4096 for the stack size is
187 the suggested approach in the absence of more specific information).
188 Availability: Windows, systems with POSIX threads.
189
Georg Brandl116aa622007-08-15 14:28:22 +0000190
Antoine Pitrou7c3e5772010-04-14 15:44:10 +0000191This module also defines the following constant:
192
193.. data:: TIMEOUT_MAX
194
195 The maximum value allowed for the *timeout* parameter of blocking functions
196 (:meth:`Lock.acquire`, :meth:`RLock.acquire`, :meth:`Condition.wait`, etc.).
Georg Brandl6faee4e2010-09-21 14:48:28 +0000197 Specifying a timeout greater than this value will raise an
Antoine Pitrou7c3e5772010-04-14 15:44:10 +0000198 :exc:`OverflowError`.
199
Antoine Pitrouadbc0092010-04-19 14:05:51 +0000200 .. versionadded:: 3.2
Antoine Pitrou7c3e5772010-04-14 15:44:10 +0000201
Georg Brandl67b21b72010-08-17 15:07:14 +0000202
Georg Brandl116aa622007-08-15 14:28:22 +0000203Detailed interfaces for the objects are documented below.
204
205The design of this module is loosely based on Java's threading model. However,
206where Java makes locks and condition variables basic behavior of every object,
207they are separate objects in Python. Python's :class:`Thread` class supports a
208subset of the behavior of Java's Thread class; currently, there are no
209priorities, no thread groups, and threads cannot be destroyed, stopped,
210suspended, resumed, or interrupted. The static methods of Java's Thread class,
211when implemented, are mapped to module-level functions.
212
213All of the methods described below are executed atomically.
214
215
Georg Brandla971c652008-11-07 09:39:56 +0000216.. _thread-objects:
217
218Thread Objects
219--------------
220
221This class represents an activity that is run in a separate thread of control.
222There are two ways to specify the activity: by passing a callable object to the
223constructor, or by overriding the :meth:`run` method in a subclass. No other
224methods (except for the constructor) should be overridden in a subclass. In
225other words, *only* override the :meth:`__init__` and :meth:`run` methods of
226this class.
227
228Once a thread object is created, its activity must be started by calling the
229thread's :meth:`start` method. This invokes the :meth:`run` method in a
230separate thread of control.
231
232Once the thread's activity is started, the thread is considered 'alive'. It
233stops being alive when its :meth:`run` method terminates -- either normally, or
234by raising an unhandled exception. The :meth:`is_alive` method tests whether the
235thread is alive.
236
237Other threads can call a thread's :meth:`join` method. This blocks the calling
238thread until the thread whose :meth:`join` method is called is terminated.
239
240A thread has a name. The name can be passed to the constructor, and read or
241changed through the :attr:`name` attribute.
242
243A thread can be flagged as a "daemon thread". The significance of this flag is
244that the entire Python program exits when only daemon threads are left. The
245initial value is inherited from the creating thread. The flag can be set
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000246through the :attr:`daemon` property.
Georg Brandla971c652008-11-07 09:39:56 +0000247
248There is a "main thread" object; this corresponds to the initial thread of
249control in the Python program. It is not a daemon thread.
250
251There is the possibility that "dummy thread objects" are created. These are
252thread objects corresponding to "alien threads", which are threads of control
253started outside the threading module, such as directly from C code. Dummy
254thread objects have limited functionality; they are always considered alive and
255daemonic, and cannot be :meth:`join`\ ed. They are never deleted, since it is
256impossible to detect the termination of alien threads.
257
258
259.. class:: Thread(group=None, target=None, name=None, args=(), kwargs={})
260
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000261 This constructor should always be called with keyword arguments. Arguments
262 are:
Georg Brandla971c652008-11-07 09:39:56 +0000263
264 *group* should be ``None``; reserved for future extension when a
265 :class:`ThreadGroup` class is implemented.
266
267 *target* is the callable object to be invoked by the :meth:`run` method.
268 Defaults to ``None``, meaning nothing is called.
269
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000270 *name* is the thread name. By default, a unique name is constructed of the
271 form "Thread-*N*" where *N* is a small decimal number.
Georg Brandla971c652008-11-07 09:39:56 +0000272
273 *args* is the argument tuple for the target invocation. Defaults to ``()``.
274
275 *kwargs* is a dictionary of keyword arguments for the target invocation.
276 Defaults to ``{}``.
277
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000278 If the subclass overrides the constructor, it must make sure to invoke the
279 base class constructor (``Thread.__init__()``) before doing anything else to
280 the thread.
Georg Brandla971c652008-11-07 09:39:56 +0000281
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000282 .. method:: start()
Georg Brandla971c652008-11-07 09:39:56 +0000283
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000284 Start the thread's activity.
Georg Brandla971c652008-11-07 09:39:56 +0000285
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000286 It must be called at most once per thread object. It arranges for the
287 object's :meth:`run` method to be invoked in a separate thread of control.
Georg Brandla971c652008-11-07 09:39:56 +0000288
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000289 This method will raise a :exc:`RuntimeException` if called more than once
290 on the same thread object.
Georg Brandla971c652008-11-07 09:39:56 +0000291
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000292 .. method:: run()
Georg Brandla971c652008-11-07 09:39:56 +0000293
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000294 Method representing the thread's activity.
Georg Brandla971c652008-11-07 09:39:56 +0000295
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000296 You may override this method in a subclass. The standard :meth:`run`
297 method invokes the callable object passed to the object's constructor as
298 the *target* argument, if any, with sequential and keyword arguments taken
299 from the *args* and *kwargs* arguments, respectively.
Georg Brandla971c652008-11-07 09:39:56 +0000300
Georg Brandl7f01a132009-09-16 15:58:14 +0000301 .. method:: join(timeout=None)
Georg Brandla971c652008-11-07 09:39:56 +0000302
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000303 Wait until the thread terminates. This blocks the calling thread until the
304 thread whose :meth:`join` method is called terminates -- either normally
305 or through an unhandled exception -- or until the optional timeout occurs.
Georg Brandla971c652008-11-07 09:39:56 +0000306
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000307 When the *timeout* argument is present and not ``None``, it should be a
308 floating point number specifying a timeout for the operation in seconds
309 (or fractions thereof). As :meth:`join` always returns ``None``, you must
310 call :meth:`is_alive` after :meth:`join` to decide whether a timeout
311 happened -- if the thread is still alive, the :meth:`join` call timed out.
Georg Brandla971c652008-11-07 09:39:56 +0000312
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000313 When the *timeout* argument is not present or ``None``, the operation will
314 block until the thread terminates.
Georg Brandla971c652008-11-07 09:39:56 +0000315
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000316 A thread can be :meth:`join`\ ed many times.
Georg Brandla971c652008-11-07 09:39:56 +0000317
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000318 :meth:`join` raises a :exc:`RuntimeError` if an attempt is made to join
319 the current thread as that would cause a deadlock. It is also an error to
320 :meth:`join` a thread before it has been started and attempts to do so
321 raises the same exception.
Georg Brandla971c652008-11-07 09:39:56 +0000322
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000323 .. attribute:: name
Georg Brandla971c652008-11-07 09:39:56 +0000324
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000325 A string used for identification purposes only. It has no semantics.
326 Multiple threads may be given the same name. The initial name is set by
327 the constructor.
Georg Brandla971c652008-11-07 09:39:56 +0000328
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000329 .. method:: getName()
330 setName()
Georg Brandla971c652008-11-07 09:39:56 +0000331
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000332 Old getter/setter API for :attr:`~Thread.name`; use it directly as a
333 property instead.
Georg Brandla971c652008-11-07 09:39:56 +0000334
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000335 .. attribute:: ident
Georg Brandla971c652008-11-07 09:39:56 +0000336
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000337 The 'thread identifier' of this thread or ``None`` if the thread has not
338 been started. This is a nonzero integer. See the
339 :func:`thread.get_ident()` function. Thread identifiers may be recycled
340 when a thread exits and another thread is created. The identifier is
341 available even after the thread has exited.
Georg Brandla971c652008-11-07 09:39:56 +0000342
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000343 .. method:: is_alive()
Georg Brandla971c652008-11-07 09:39:56 +0000344
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000345 Return whether the thread is alive.
Georg Brandl770b0be2009-01-02 20:10:05 +0000346
Brett Cannona57edd02010-07-23 12:26:35 +0000347 This method returns ``True`` just before the :meth:`run` method starts
348 until just after the :meth:`run` method terminates. The module function
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000349 :func:`.enumerate` returns a list of all alive threads.
Georg Brandl770b0be2009-01-02 20:10:05 +0000350
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000351 .. attribute:: daemon
Georg Brandl770b0be2009-01-02 20:10:05 +0000352
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000353 A boolean value indicating whether this thread is a daemon thread (True)
354 or not (False). This must be set before :meth:`start` is called,
355 otherwise :exc:`RuntimeError` is raised. Its initial value is inherited
356 from the creating thread; the main thread is not a daemon thread and
357 therefore all threads created in the main thread default to :attr:`daemon`
358 = ``False``.
Georg Brandla971c652008-11-07 09:39:56 +0000359
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000360 The entire Python program exits when no alive non-daemon threads are left.
Georg Brandla971c652008-11-07 09:39:56 +0000361
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000362 .. method:: isDaemon()
363 setDaemon()
Georg Brandla971c652008-11-07 09:39:56 +0000364
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000365 Old getter/setter API for :attr:`~Thread.daemon`; use it directly as a
366 property instead.
Georg Brandl770b0be2009-01-02 20:10:05 +0000367
368
Georg Brandl116aa622007-08-15 14:28:22 +0000369.. _lock-objects:
370
371Lock Objects
372------------
373
374A primitive lock is a synchronization primitive that is not owned by a
375particular thread when locked. In Python, it is currently the lowest level
Georg Brandl2067bfd2008-05-25 13:05:15 +0000376synchronization primitive available, implemented directly by the :mod:`_thread`
Georg Brandl116aa622007-08-15 14:28:22 +0000377extension module.
378
379A primitive lock is in one of two states, "locked" or "unlocked". It is created
380in the unlocked state. It has two basic methods, :meth:`acquire` and
381:meth:`release`. When the state is unlocked, :meth:`acquire` changes the state
382to locked and returns immediately. When the state is locked, :meth:`acquire`
383blocks until a call to :meth:`release` in another thread changes it to unlocked,
384then the :meth:`acquire` call resets it to locked and returns. The
385:meth:`release` method should only be called in the locked state; it changes the
386state to unlocked and returns immediately. If an attempt is made to release an
387unlocked lock, a :exc:`RuntimeError` will be raised.
388
389When more than one thread is blocked in :meth:`acquire` waiting for the state to
390turn to unlocked, only one thread proceeds when a :meth:`release` call resets
391the state to unlocked; which one of the waiting threads proceeds is not defined,
392and may vary across implementations.
393
394All methods are executed atomically.
395
396
Antoine Pitrou7c3e5772010-04-14 15:44:10 +0000397.. method:: Lock.acquire(blocking=True, timeout=-1)
Georg Brandl116aa622007-08-15 14:28:22 +0000398
399 Acquire a lock, blocking or non-blocking.
400
401 When invoked without arguments, block until the lock is unlocked, then set it to
402 locked, and return true.
403
404 When invoked with the *blocking* argument set to true, do the same thing as when
405 called without arguments, and return true.
406
407 When invoked with the *blocking* argument set to false, do not block. If a call
408 without an argument would block, return false immediately; otherwise, do the
409 same thing as when called without arguments, and return true.
410
Antoine Pitrou7c3e5772010-04-14 15:44:10 +0000411 When invoked with the floating-point *timeout* argument set to a positive
412 value, block for at most the number of seconds specified by *timeout*
413 and as long as the lock cannot be acquired. A negative *timeout* argument
414 specifies an unbounded wait. It is forbidden to specify a *timeout*
415 when *blocking* is false.
416
417 The return value is ``True`` if the lock is acquired successfully,
418 ``False`` if not (for example if the *timeout* expired).
419
Antoine Pitrouadbc0092010-04-19 14:05:51 +0000420 .. versionchanged:: 3.2
421 The *timeout* parameter is new.
Georg Brandl116aa622007-08-15 14:28:22 +0000422
Antoine Pitrou810023d2010-12-15 22:59:16 +0000423 .. versionchanged:: 3.2
424 Lock acquires can now be interrupted by signals on POSIX.
425
Georg Brandl67b21b72010-08-17 15:07:14 +0000426
Georg Brandl116aa622007-08-15 14:28:22 +0000427.. method:: Lock.release()
428
429 Release a lock.
430
431 When the lock is locked, reset it to unlocked, and return. If any other threads
432 are blocked waiting for the lock to become unlocked, allow exactly one of them
433 to proceed.
434
435 Do not call this method when the lock is unlocked.
436
437 There is no return value.
438
439
440.. _rlock-objects:
441
442RLock Objects
443-------------
444
445A reentrant lock is a synchronization primitive that may be acquired multiple
446times by the same thread. Internally, it uses the concepts of "owning thread"
447and "recursion level" in addition to the locked/unlocked state used by primitive
448locks. In the locked state, some thread owns the lock; in the unlocked state,
449no thread owns it.
450
451To lock the lock, a thread calls its :meth:`acquire` method; this returns once
452the thread owns the lock. To unlock the lock, a thread calls its
453:meth:`release` method. :meth:`acquire`/:meth:`release` call pairs may be
454nested; only the final :meth:`release` (the :meth:`release` of the outermost
455pair) resets the lock to unlocked and allows another thread blocked in
456:meth:`acquire` to proceed.
457
458
Antoine Pitrou7c3e5772010-04-14 15:44:10 +0000459.. method:: RLock.acquire(blocking=True, timeout=-1)
Georg Brandl116aa622007-08-15 14:28:22 +0000460
461 Acquire a lock, blocking or non-blocking.
462
463 When invoked without arguments: if this thread already owns the lock, increment
464 the recursion level by one, and return immediately. Otherwise, if another
465 thread owns the lock, block until the lock is unlocked. Once the lock is
466 unlocked (not owned by any thread), then grab ownership, set the recursion level
467 to one, and return. If more than one thread is blocked waiting until the lock
468 is unlocked, only one at a time will be able to grab ownership of the lock.
469 There is no return value in this case.
470
471 When invoked with the *blocking* argument set to true, do the same thing as when
472 called without arguments, and return true.
473
474 When invoked with the *blocking* argument set to false, do not block. If a call
475 without an argument would block, return false immediately; otherwise, do the
476 same thing as when called without arguments, and return true.
477
Antoine Pitrou7c3e5772010-04-14 15:44:10 +0000478 When invoked with the floating-point *timeout* argument set to a positive
479 value, block for at most the number of seconds specified by *timeout*
480 and as long as the lock cannot be acquired. Return true if the lock has
481 been acquired, false if the timeout has elapsed.
482
Antoine Pitrouadbc0092010-04-19 14:05:51 +0000483 .. versionchanged:: 3.2
484 The *timeout* parameter is new.
485
Georg Brandl116aa622007-08-15 14:28:22 +0000486
487.. method:: RLock.release()
488
489 Release a lock, decrementing the recursion level. If after the decrement it is
490 zero, reset the lock to unlocked (not owned by any thread), and if any other
491 threads are blocked waiting for the lock to become unlocked, allow exactly one
492 of them to proceed. If after the decrement the recursion level is still
493 nonzero, the lock remains locked and owned by the calling thread.
494
495 Only call this method when the calling thread owns the lock. A
496 :exc:`RuntimeError` is raised if this method is called when the lock is
497 unlocked.
498
499 There is no return value.
500
501
502.. _condition-objects:
503
504Condition Objects
505-----------------
506
507A condition variable is always associated with some kind of lock; this can be
508passed in or one will be created by default. (Passing one in is useful when
509several condition variables must share the same lock.)
510
511A condition variable has :meth:`acquire` and :meth:`release` methods that call
512the corresponding methods of the associated lock. It also has a :meth:`wait`
Georg Brandlf9926402008-06-13 06:32:25 +0000513method, and :meth:`notify` and :meth:`notify_all` methods. These three must only
Georg Brandl116aa622007-08-15 14:28:22 +0000514be called when the calling thread has acquired the lock, otherwise a
515:exc:`RuntimeError` is raised.
516
517The :meth:`wait` method releases the lock, and then blocks until it is awakened
Georg Brandlf9926402008-06-13 06:32:25 +0000518by a :meth:`notify` or :meth:`notify_all` call for the same condition variable in
Georg Brandl116aa622007-08-15 14:28:22 +0000519another thread. Once awakened, it re-acquires the lock and returns. It is also
520possible to specify a timeout.
521
522The :meth:`notify` method wakes up one of the threads waiting for the condition
Georg Brandlf9926402008-06-13 06:32:25 +0000523variable, if any are waiting. The :meth:`notify_all` method wakes up all threads
Georg Brandl116aa622007-08-15 14:28:22 +0000524waiting for the condition variable.
525
Georg Brandlf9926402008-06-13 06:32:25 +0000526Note: the :meth:`notify` and :meth:`notify_all` methods don't release the lock;
Georg Brandl116aa622007-08-15 14:28:22 +0000527this means that the thread or threads awakened will not return from their
528:meth:`wait` call immediately, but only when the thread that called
Georg Brandlf9926402008-06-13 06:32:25 +0000529:meth:`notify` or :meth:`notify_all` finally relinquishes ownership of the lock.
Georg Brandl116aa622007-08-15 14:28:22 +0000530
531Tip: the typical programming style using condition variables uses the lock to
532synchronize access to some shared state; threads that are interested in a
533particular change of state call :meth:`wait` repeatedly until they see the
534desired state, while threads that modify the state call :meth:`notify` or
Georg Brandlf9926402008-06-13 06:32:25 +0000535:meth:`notify_all` when they change the state in such a way that it could
Georg Brandl116aa622007-08-15 14:28:22 +0000536possibly be a desired state for one of the waiters. For example, the following
537code is a generic producer-consumer situation with unlimited buffer capacity::
538
539 # Consume one item
540 cv.acquire()
541 while not an_item_is_available():
542 cv.wait()
543 get_an_available_item()
544 cv.release()
545
546 # Produce one item
547 cv.acquire()
548 make_an_item_available()
549 cv.notify()
550 cv.release()
551
Georg Brandlf9926402008-06-13 06:32:25 +0000552To choose between :meth:`notify` and :meth:`notify_all`, consider whether one
Georg Brandl116aa622007-08-15 14:28:22 +0000553state change can be interesting for only one or several waiting threads. E.g.
554in a typical producer-consumer situation, adding one item to the buffer only
555needs to wake up one consumer thread.
556
Kristján Valur Jónsson63315202010-11-18 12:46:39 +0000557Note: Condition variables can be, depending on the implementation, subject
558to both spurious wakeups (when :meth:`wait` returns without a :meth:`notify`
559call) and stolen wakeups (when another thread acquires the lock before the
560awoken thread.) For this reason, it is always necessary to verify the state
561the thread is waiting for when :meth:`wait` returns and optionally repeat
562the call as often as necessary.
563
Georg Brandl116aa622007-08-15 14:28:22 +0000564
Georg Brandl7f01a132009-09-16 15:58:14 +0000565.. class:: Condition(lock=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000566
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000567 If the *lock* argument is given and not ``None``, it must be a :class:`Lock`
568 or :class:`RLock` object, and it is used as the underlying lock. Otherwise,
569 a new :class:`RLock` object is created and used as the underlying lock.
Georg Brandl116aa622007-08-15 14:28:22 +0000570
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000571 .. method:: acquire(*args)
Georg Brandl116aa622007-08-15 14:28:22 +0000572
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000573 Acquire the underlying lock. This method calls the corresponding method on
574 the underlying lock; the return value is whatever that method returns.
Georg Brandl116aa622007-08-15 14:28:22 +0000575
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000576 .. method:: release()
Georg Brandl116aa622007-08-15 14:28:22 +0000577
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000578 Release the underlying lock. This method calls the corresponding method on
579 the underlying lock; there is no return value.
Georg Brandl116aa622007-08-15 14:28:22 +0000580
Georg Brandl7f01a132009-09-16 15:58:14 +0000581 .. method:: wait(timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000582
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000583 Wait until notified or until a timeout occurs. If the calling thread has
584 not acquired the lock when this method is called, a :exc:`RuntimeError` is
585 raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000586
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000587 This method releases the underlying lock, and then blocks until it is
588 awakened by a :meth:`notify` or :meth:`notify_all` call for the same
589 condition variable in another thread, or until the optional timeout
590 occurs. Once awakened or timed out, it re-acquires the lock and returns.
Georg Brandl116aa622007-08-15 14:28:22 +0000591
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000592 When the *timeout* argument is present and not ``None``, it should be a
593 floating point number specifying a timeout for the operation in seconds
594 (or fractions thereof).
Georg Brandl116aa622007-08-15 14:28:22 +0000595
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000596 When the underlying lock is an :class:`RLock`, it is not released using
597 its :meth:`release` method, since this may not actually unlock the lock
598 when it was acquired multiple times recursively. Instead, an internal
599 interface of the :class:`RLock` class is used, which really unlocks it
600 even when it has been recursively acquired several times. Another internal
601 interface is then used to restore the recursion level when the lock is
602 reacquired.
Georg Brandl116aa622007-08-15 14:28:22 +0000603
Georg Brandlb9a43912010-10-28 09:03:20 +0000604 The return value is ``True`` unless a given *timeout* expired, in which
605 case it is ``False``.
606
607 .. versionchanged:: 3.2
608 Previously, the method always returned ``None``.
609
Kristján Valur Jónsson63315202010-11-18 12:46:39 +0000610 .. method:: wait_for(predicate, timeout=None)
611
612 Wait until a condition evaluates to True. *predicate* should be a
613 callable which result will be interpreted as a boolean value.
614 A *timeout* may be provided giving the maximum time to wait.
615
616 This utility method may call :meth:`wait` repeatedly until the predicate
617 is satisfied, or until a timeout occurs. The return value is
618 the last return value of the predicate and will evaluate to
619 ``False`` if the method timed out.
620
621 Ignoring the timeout feature, calling this method is roughly equivalent to
622 writing::
623
624 while not predicate():
625 cv.wait()
626
627 Therefore, the same rules apply as with :meth:`wait`: The lock must be
628 held when called and is re-aquired on return. The predicate is evaluated
629 with the lock held.
630
631 Using this method, the consumer example above can be written thus::
632
633 with cv:
634 cv.wait_for(an_item_is_available)
635 get_an_available_item()
636
637 .. versionadded:: 3.2
638
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000639 .. method:: notify()
Georg Brandl116aa622007-08-15 14:28:22 +0000640
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000641 Wake up a thread waiting on this condition, if any. If the calling thread
642 has not acquired the lock when this method is called, a
643 :exc:`RuntimeError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000644
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000645 This method wakes up one of the threads waiting for the condition
646 variable, if any are waiting; it is a no-op if no threads are waiting.
Georg Brandl116aa622007-08-15 14:28:22 +0000647
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000648 The current implementation wakes up exactly one thread, if any are
649 waiting. However, it's not safe to rely on this behavior. A future,
650 optimized implementation may occasionally wake up more than one thread.
Georg Brandl116aa622007-08-15 14:28:22 +0000651
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000652 Note: the awakened thread does not actually return from its :meth:`wait`
653 call until it can reacquire the lock. Since :meth:`notify` does not
654 release the lock, its caller should.
Georg Brandl116aa622007-08-15 14:28:22 +0000655
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000656 .. method:: notify_all()
Georg Brandl116aa622007-08-15 14:28:22 +0000657
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000658 Wake up all threads waiting on this condition. This method acts like
659 :meth:`notify`, but wakes up all waiting threads instead of one. If the
660 calling thread has not acquired the lock when this method is called, a
661 :exc:`RuntimeError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000662
663
664.. _semaphore-objects:
665
666Semaphore Objects
667-----------------
668
669This is one of the oldest synchronization primitives in the history of computer
670science, invented by the early Dutch computer scientist Edsger W. Dijkstra (he
671used :meth:`P` and :meth:`V` instead of :meth:`acquire` and :meth:`release`).
672
673A semaphore manages an internal counter which is decremented by each
674:meth:`acquire` call and incremented by each :meth:`release` call. The counter
675can never go below zero; when :meth:`acquire` finds that it is zero, it blocks,
676waiting until some other thread calls :meth:`release`.
677
678
Georg Brandl7f01a132009-09-16 15:58:14 +0000679.. class:: Semaphore(value=1)
Georg Brandl116aa622007-08-15 14:28:22 +0000680
681 The optional argument gives the initial *value* for the internal counter; it
682 defaults to ``1``. If the *value* given is less than 0, :exc:`ValueError` is
683 raised.
684
Antoine Pitrou0454af92010-04-17 23:51:58 +0000685 .. method:: acquire(blocking=True, timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000686
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000687 Acquire a semaphore.
Georg Brandl116aa622007-08-15 14:28:22 +0000688
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000689 When invoked without arguments: if the internal counter is larger than
690 zero on entry, decrement it by one and return immediately. If it is zero
691 on entry, block, waiting until some other thread has called
692 :meth:`release` to make it larger than zero. This is done with proper
693 interlocking so that if multiple :meth:`acquire` calls are blocked,
694 :meth:`release` will wake exactly one of them up. The implementation may
695 pick one at random, so the order in which blocked threads are awakened
Antoine Pitrou0454af92010-04-17 23:51:58 +0000696 should not be relied on. Returns true (or blocks indefinitely).
Georg Brandl116aa622007-08-15 14:28:22 +0000697
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000698 When invoked with *blocking* set to false, do not block. If a call
Antoine Pitrou0454af92010-04-17 23:51:58 +0000699 without an argument would block, return false immediately; otherwise,
700 do the same thing as when called without arguments, and return true.
701
702 When invoked with a *timeout* other than None, it will block for at
703 most *timeout* seconds. If acquire does not complete successfully in
704 that interval, return false. Return true otherwise.
705
706 .. versionchanged:: 3.2
707 The *timeout* parameter is new.
Georg Brandl116aa622007-08-15 14:28:22 +0000708
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000709 .. method:: release()
Georg Brandl116aa622007-08-15 14:28:22 +0000710
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000711 Release a semaphore, incrementing the internal counter by one. When it
712 was zero on entry and another thread is waiting for it to become larger
713 than zero again, wake up that thread.
Georg Brandl116aa622007-08-15 14:28:22 +0000714
715
716.. _semaphore-examples:
717
718:class:`Semaphore` Example
719^^^^^^^^^^^^^^^^^^^^^^^^^^
720
721Semaphores are often used to guard resources with limited capacity, for example,
722a database server. In any situation where the size of the resource size is
723fixed, you should use a bounded semaphore. Before spawning any worker threads,
724your main thread would initialize the semaphore::
725
726 maxconnections = 5
727 ...
728 pool_sema = BoundedSemaphore(value=maxconnections)
729
730Once spawned, worker threads call the semaphore's acquire and release methods
731when they need to connect to the server::
732
733 pool_sema.acquire()
734 conn = connectdb()
735 ... use connection ...
736 conn.close()
737 pool_sema.release()
738
739The use of a bounded semaphore reduces the chance that a programming error which
740causes the semaphore to be released more than it's acquired will go undetected.
741
742
743.. _event-objects:
744
745Event Objects
746-------------
747
748This is one of the simplest mechanisms for communication between threads: one
749thread signals an event and other threads wait for it.
750
751An event object manages an internal flag that can be set to true with the
Georg Brandl502d9a52009-07-26 15:02:41 +0000752:meth:`~Event.set` method and reset to false with the :meth:`clear` method. The
Georg Brandl116aa622007-08-15 14:28:22 +0000753:meth:`wait` method blocks until the flag is true.
754
755
756.. class:: Event()
757
758 The internal flag is initially false.
759
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000760 .. method:: is_set()
Georg Brandl116aa622007-08-15 14:28:22 +0000761
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000762 Return true if and only if the internal flag is true.
Georg Brandl116aa622007-08-15 14:28:22 +0000763
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000764 .. method:: set()
Georg Brandl116aa622007-08-15 14:28:22 +0000765
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000766 Set the internal flag to true. All threads waiting for it to become true
767 are awakened. Threads that call :meth:`wait` once the flag is true will
768 not block at all.
Georg Brandl116aa622007-08-15 14:28:22 +0000769
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000770 .. method:: clear()
Georg Brandl116aa622007-08-15 14:28:22 +0000771
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000772 Reset the internal flag to false. Subsequently, threads calling
Georg Brandl502d9a52009-07-26 15:02:41 +0000773 :meth:`wait` will block until :meth:`.set` is called to set the internal
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000774 flag to true again.
Georg Brandl116aa622007-08-15 14:28:22 +0000775
Georg Brandl7f01a132009-09-16 15:58:14 +0000776 .. method:: wait(timeout=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000777
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000778 Block until the internal flag is true. If the internal flag is true on
779 entry, return immediately. Otherwise, block until another thread calls
780 :meth:`set` to set the flag to true, or until the optional timeout occurs.
Georg Brandl116aa622007-08-15 14:28:22 +0000781
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000782 When the timeout argument is present and not ``None``, it should be a
783 floating point number specifying a timeout for the operation in seconds
784 (or fractions thereof).
Georg Brandl116aa622007-08-15 14:28:22 +0000785
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000786 This method returns the internal flag on exit, so it will always return
787 ``True`` except if a timeout is given and the operation times out.
Georg Brandl116aa622007-08-15 14:28:22 +0000788
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000789 .. versionchanged:: 3.1
790 Previously, the method always returned ``None``.
Benjamin Petersond23f8222009-04-05 19:13:16 +0000791
Georg Brandl116aa622007-08-15 14:28:22 +0000792
Georg Brandl116aa622007-08-15 14:28:22 +0000793.. _timer-objects:
794
795Timer Objects
796-------------
797
798This class represents an action that should be run only after a certain amount
799of time has passed --- a timer. :class:`Timer` is a subclass of :class:`Thread`
800and as such also functions as an example of creating custom threads.
801
802Timers are started, as with threads, by calling their :meth:`start` method. The
803timer can be stopped (before its action has begun) by calling the :meth:`cancel`
804method. The interval the timer will wait before executing its action may not be
805exactly the same as the interval specified by the user.
806
807For example::
808
809 def hello():
Collin Winterc79461b2007-09-01 23:34:30 +0000810 print("hello, world")
Georg Brandl116aa622007-08-15 14:28:22 +0000811
812 t = Timer(30.0, hello)
813 t.start() # after 30 seconds, "hello, world" will be printed
814
815
816.. class:: Timer(interval, function, args=[], kwargs={})
817
818 Create a timer that will run *function* with arguments *args* and keyword
819 arguments *kwargs*, after *interval* seconds have passed.
820
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000821 .. method:: cancel()
Georg Brandl116aa622007-08-15 14:28:22 +0000822
Georg Brandl7a72b3a2009-07-26 14:48:09 +0000823 Stop the timer, and cancel the execution of the timer's action. This will
824 only work if the timer is still in its waiting stage.
Georg Brandl116aa622007-08-15 14:28:22 +0000825
826
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000827Barrier Objects
828---------------
829
Georg Brandl5bc16862010-10-28 13:07:50 +0000830.. versionadded:: 3.2
831
832This class provides a simple synchronization primitive for use by a fixed number
833of threads that need to wait for each other. Each of the threads tries to pass
834the barrier by calling the :meth:`wait` method and will block until all of the
835threads have made the call. At this points, the threads are released
836simultanously.
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000837
838The barrier can be reused any number of times for the same number of threads.
839
840As an example, here is a simple way to synchronize a client and server thread::
841
842 b = Barrier(2, timeout=5)
Georg Brandl5bc16862010-10-28 13:07:50 +0000843
844 def server():
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000845 start_server()
846 b.wait()
847 while True:
848 connection = accept_connection()
849 process_server_connection(connection)
850
Georg Brandl5bc16862010-10-28 13:07:50 +0000851 def client():
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000852 b.wait()
853 while True:
Georg Brandl5bc16862010-10-28 13:07:50 +0000854 connection = make_connection()
855 process_client_connection(connection)
856
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000857
858.. class:: Barrier(parties, action=None, timeout=None)
859
Georg Brandl5bc16862010-10-28 13:07:50 +0000860 Create a barrier object for *parties* number of threads. An *action*, when
861 provided, is a callable to be called by one of the threads when they are
862 released. *timeout* is the default timeout value if none is specified for
863 the :meth:`wait` method.
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000864
865 .. method:: wait(timeout=None)
866
867 Pass the barrier. When all the threads party to the barrier have called
Georg Brandl5bc16862010-10-28 13:07:50 +0000868 this function, they are all released simultaneously. If a *timeout* is
869 provided, is is used in preference to any that was supplied to the class
870 constructor.
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000871
Georg Brandl5bc16862010-10-28 13:07:50 +0000872 The return value is an integer in the range 0 to *parties* -- 1, different
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000873 for each thrad. This can be used to select a thread to do some special
Georg Brandl5bc16862010-10-28 13:07:50 +0000874 housekeeping, e.g.::
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000875
876 i = barrier.wait()
877 if i == 0:
Georg Brandl5bc16862010-10-28 13:07:50 +0000878 # Only one thread needs to print this
879 print("passed the barrier")
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000880
Georg Brandl5bc16862010-10-28 13:07:50 +0000881 If an *action* was provided to the constructor, one of the threads will
882 have called it prior to being released. Should this call raise an error,
883 the barrier is put into the broken state.
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000884
885 If the call times out, the barrier is put into the broken state.
886
887 This method may raise a :class:`BrokenBarrierError` exception if the
Georg Brandl5bc16862010-10-28 13:07:50 +0000888 barrier is broken or reset while a thread is waiting.
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000889
890 .. method:: reset()
891
Georg Brandl5bc16862010-10-28 13:07:50 +0000892 Return the barrier to the default, empty state. Any threads waiting on it
893 will receive the :class:`BrokenBarrierError` exception.
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000894
895 Note that using this function may can require some external
Georg Brandl5bc16862010-10-28 13:07:50 +0000896 synchronization if there are other threads whose state is unknown. If a
897 barrier is broken it may be better to just leave it and create a new one.
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000898
899 .. method:: abort()
900
901 Put the barrier into a broken state. This causes any active or future
Georg Brandl5bc16862010-10-28 13:07:50 +0000902 calls to :meth:`wait` to fail with the :class:`BrokenBarrierError`. Use
903 this for example if one of the needs to abort, to avoid deadlocking the
904 application.
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000905
906 It may be preferable to simply create the barrier with a sensible
Georg Brandl5bc16862010-10-28 13:07:50 +0000907 *timeout* value to automatically guard against one of the threads going
908 awry.
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000909
910 .. attribute:: parties
911
912 The number of threads required to pass the barrier.
913
914 .. attribute:: n_waiting
915
916 The number of threads currently waiting in the barrier.
917
918 .. attribute:: broken
919
920 A boolean that is ``True`` if the barrier is in the broken state.
921
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000922
Georg Brandl5bc16862010-10-28 13:07:50 +0000923.. exception:: BrokenBarrierError
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000924
Georg Brandl5bc16862010-10-28 13:07:50 +0000925 This exception, a subclass of :exc:`RuntimeError`, is raised when the
926 :class:`Barrier` object is reset or broken.
Kristján Valur Jónsson3be00032010-10-28 09:43:10 +0000927
928
Georg Brandl116aa622007-08-15 14:28:22 +0000929.. _with-locks:
930
931Using locks, conditions, and semaphores in the :keyword:`with` statement
932------------------------------------------------------------------------
933
934All of the objects provided by this module that have :meth:`acquire` and
935:meth:`release` methods can be used as context managers for a :keyword:`with`
936statement. The :meth:`acquire` method will be called when the block is entered,
937and :meth:`release` will be called when the block is exited.
938
939Currently, :class:`Lock`, :class:`RLock`, :class:`Condition`,
940:class:`Semaphore`, and :class:`BoundedSemaphore` objects may be used as
941:keyword:`with` statement context managers. For example::
942
Georg Brandl116aa622007-08-15 14:28:22 +0000943 import threading
944
945 some_rlock = threading.RLock()
946
947 with some_rlock:
Collin Winterc79461b2007-09-01 23:34:30 +0000948 print("some_rlock is locked while this executes")
Georg Brandl116aa622007-08-15 14:28:22 +0000949
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000950
951.. _threaded-imports:
952
953Importing in threaded code
954--------------------------
955
Georg Brandlf285bcc2010-10-19 21:07:16 +0000956While the import machinery is thread-safe, there are two key restrictions on
957threaded imports due to inherent limitations in the way that thread-safety is
958provided:
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000959
960* Firstly, other than in the main module, an import should not have the
961 side effect of spawning a new thread and then waiting for that thread in
962 any way. Failing to abide by this restriction can lead to a deadlock if
963 the spawned thread directly or indirectly attempts to import a module.
964* Secondly, all import attempts must be completed before the interpreter
965 starts shutting itself down. This can be most easily achieved by only
966 performing imports from non-daemon threads created through the threading
967 module. Daemon threads and threads created directly with the thread
968 module will require some other form of synchronization to ensure they do
969 not attempt imports after system shutdown has commenced. Failure to
970 abide by this restriction will lead to intermittent exceptions and
971 crashes during interpreter shutdown (as the late imports attempt to
972 access machinery which is no longer in a valid state).