• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1:mod:`threading` --- Thread-based parallelism
2=============================================
3
4.. module:: threading
5   :synopsis: Thread-based parallelism.
6
7**Source code:** :source:`Lib/threading.py`
8
9--------------
10
11This module constructs higher-level threading interfaces on top of the lower
12level :mod:`_thread` module.  See also the :mod:`queue` module.
13
14.. versionchanged:: 3.7
15   This module used to be optional, it is now always available.
16
17.. note::
18
19   While they are not listed below, the ``camelCase`` names used for some
20   methods and functions in this module in the Python 2.x series are still
21   supported by this module.
22
23
24This module defines the following functions:
25
26
27.. function:: active_count()
28
29   Return the number of :class:`Thread` objects currently alive.  The returned
30   count is equal to the length of the list returned by :func:`.enumerate`.
31
32
33.. function:: current_thread()
34
35   Return the current :class:`Thread` object, corresponding to the caller's thread
36   of control.  If the caller's thread of control was not created through the
37   :mod:`threading` module, a dummy thread object with limited functionality is
38   returned.
39
40
41.. function:: excepthook(args, /)
42
43   Handle uncaught exception raised by :func:`Thread.run`.
44
45   The *args* argument has the following attributes:
46
47   * *exc_type*: Exception type.
48   * *exc_value*: Exception value, can be ``None``.
49   * *exc_traceback*: Exception traceback, can be ``None``.
50   * *thread*: Thread which raised the exception, can be ``None``.
51
52   If *exc_type* is :exc:`SystemExit`, the exception is silently ignored.
53   Otherwise, the exception is printed out on :data:`sys.stderr`.
54
55   If  this function raises an exception, :func:`sys.excepthook` is called to
56   handle it.
57
58   :func:`threading.excepthook` can be overridden to control how uncaught
59   exceptions raised by :func:`Thread.run` are handled.
60
61   Storing *exc_value* using a custom hook can create a reference cycle. It
62   should be cleared explicitly to break the reference cycle when the
63   exception is no longer needed.
64
65   Storing *thread* using a custom hook can resurrect it if it is set to an
66   object which is being finalized. Avoid storing *thread* after the custom
67   hook completes to avoid resurrecting objects.
68
69   .. seealso::
70      :func:`sys.excepthook` handles uncaught exceptions.
71
72   .. versionadded:: 3.8
73
74
75.. function:: get_ident()
76
77   Return the 'thread identifier' of the current thread.  This is a nonzero
78   integer.  Its value has no direct meaning; it is intended as a magic cookie
79   to be used e.g. to index a dictionary of thread-specific data.  Thread
80   identifiers may be recycled when a thread exits and another thread is
81   created.
82
83   .. versionadded:: 3.3
84
85
86.. function:: get_native_id()
87
88   Return the native integral Thread ID of the current thread assigned by the kernel.
89   This is a non-negative integer.
90   Its value may be used to uniquely identify this particular thread system-wide
91   (until the thread terminates, after which the value may be recycled by the OS).
92
93   .. availability:: Windows, FreeBSD, Linux, macOS, OpenBSD, NetBSD, AIX.
94
95   .. versionadded:: 3.8
96
97
98.. function:: enumerate()
99
100   Return a list of all :class:`Thread` objects currently alive.  The list
101   includes daemonic threads, dummy thread objects created by
102   :func:`current_thread`, and the main thread.  It excludes terminated threads
103   and threads that have not yet been started.
104
105
106.. function:: main_thread()
107
108   Return the main :class:`Thread` object.  In normal conditions, the
109   main thread is the thread from which the Python interpreter was
110   started.
111
112   .. versionadded:: 3.4
113
114
115.. function:: settrace(func)
116
117   .. index:: single: trace function
118
119   Set a trace function for all threads started from the :mod:`threading` module.
120   The *func* will be passed to  :func:`sys.settrace` for each thread, before its
121   :meth:`~Thread.run` method is called.
122
123
124.. function:: setprofile(func)
125
126   .. index:: single: profile function
127
128   Set a profile function for all threads started from the :mod:`threading` module.
129   The *func* will be passed to  :func:`sys.setprofile` for each thread, before its
130   :meth:`~Thread.run` method is called.
131
132
133.. function:: stack_size([size])
134
135   Return the thread stack size used when creating new threads.  The optional
136   *size* argument specifies the stack size to be used for subsequently created
137   threads, and must be 0 (use platform or configured default) or a positive
138   integer value of at least 32,768 (32 KiB). If *size* is not specified,
139   0 is used.  If changing the thread stack size is
140   unsupported, a :exc:`RuntimeError` is raised.  If the specified stack size is
141   invalid, a :exc:`ValueError` is raised and the stack size is unmodified.  32 KiB
142   is currently the minimum supported stack size value to guarantee sufficient
143   stack space for the interpreter itself.  Note that some platforms may have
144   particular restrictions on values for the stack size, such as requiring a
145   minimum stack size > 32 KiB or requiring allocation in multiples of the system
146   memory page size - platform documentation should be referred to for more
147   information (4 KiB pages are common; using multiples of 4096 for the stack size is
148   the suggested approach in the absence of more specific information).
149
150   .. availability:: Windows, systems with POSIX threads.
151
152
153This module also defines the following constant:
154
155.. data:: TIMEOUT_MAX
156
157   The maximum value allowed for the *timeout* parameter of blocking functions
158   (:meth:`Lock.acquire`, :meth:`RLock.acquire`, :meth:`Condition.wait`, etc.).
159   Specifying a timeout greater than this value will raise an
160   :exc:`OverflowError`.
161
162   .. versionadded:: 3.2
163
164
165This module defines a number of classes, which are detailed in the sections
166below.
167
168The design of this module is loosely based on Java's threading model. However,
169where Java makes locks and condition variables basic behavior of every object,
170they are separate objects in Python.  Python's :class:`Thread` class supports a
171subset of the behavior of Java's Thread class; currently, there are no
172priorities, no thread groups, and threads cannot be destroyed, stopped,
173suspended, resumed, or interrupted.  The static methods of Java's Thread class,
174when implemented, are mapped to module-level functions.
175
176All of the methods described below are executed atomically.
177
178
179Thread-Local Data
180-----------------
181
182Thread-local data is data whose values are thread specific.  To manage
183thread-local data, just create an instance of :class:`local` (or a
184subclass) and store attributes on it::
185
186  mydata = threading.local()
187  mydata.x = 1
188
189The instance's values will be different for separate threads.
190
191
192.. class:: local()
193
194   A class that represents thread-local data.
195
196   For more details and extensive examples, see the documentation string of the
197   :mod:`_threading_local` module.
198
199
200.. _thread-objects:
201
202Thread Objects
203--------------
204
205The :class:`Thread` class represents an activity that is run in a separate
206thread of control.  There are two ways to specify the activity: by passing a
207callable object to the constructor, or by overriding the :meth:`~Thread.run`
208method in a subclass.  No other methods (except for the constructor) should be
209overridden in a subclass.  In other words, *only*  override the
210:meth:`~Thread.__init__` and :meth:`~Thread.run` methods of this class.
211
212Once a thread object is created, its activity must be started by calling the
213thread's :meth:`~Thread.start` method.  This invokes the :meth:`~Thread.run`
214method in a separate thread of control.
215
216Once the thread's activity is started, the thread is considered 'alive'. It
217stops being alive when its :meth:`~Thread.run` method terminates -- either
218normally, or by raising an unhandled exception.  The :meth:`~Thread.is_alive`
219method tests whether the thread is alive.
220
221Other threads can call a thread's :meth:`~Thread.join` method.  This blocks
222the calling thread until the thread whose :meth:`~Thread.join` method is
223called is terminated.
224
225A thread has a name.  The name can be passed to the constructor, and read or
226changed through the :attr:`~Thread.name` attribute.
227
228If the :meth:`~Thread.run` method raises an exception,
229:func:`threading.excepthook` is called to handle it. By default,
230:func:`threading.excepthook` ignores silently :exc:`SystemExit`.
231
232A thread can be flagged as a "daemon thread".  The significance of this flag is
233that the entire Python program exits when only daemon threads are left.  The
234initial value is inherited from the creating thread.  The flag can be set
235through the :attr:`~Thread.daemon` property or the *daemon* constructor
236argument.
237
238.. note::
239   Daemon threads are abruptly stopped at shutdown.  Their resources (such
240   as open files, database transactions, etc.) may not be released properly.
241   If you want your threads to stop gracefully, make them non-daemonic and
242   use a suitable signalling mechanism such as an :class:`Event`.
243
244There is a "main thread" object; this corresponds to the initial thread of
245control in the Python program.  It is not a daemon thread.
246
247There is the possibility that "dummy thread objects" are created. These are
248thread objects corresponding to "alien threads", which are threads of control
249started outside the threading module, such as directly from C code.  Dummy
250thread objects have limited functionality; they are always considered alive and
251daemonic, and cannot be :meth:`~Thread.join`\ ed.  They are never deleted,
252since it is impossible to detect the termination of alien threads.
253
254
255.. class:: Thread(group=None, target=None, name=None, args=(), kwargs={}, *, \
256                  daemon=None)
257
258   This constructor should always be called with keyword arguments.  Arguments
259   are:
260
261   *group* should be ``None``; reserved for future extension when a
262   :class:`ThreadGroup` class is implemented.
263
264   *target* is the callable object to be invoked by the :meth:`run` method.
265   Defaults to ``None``, meaning nothing is called.
266
267   *name* is the thread name.  By default, a unique name is constructed of the
268   form "Thread-*N*" where *N* is a small decimal number.
269
270   *args* is the argument tuple for the target invocation.  Defaults to ``()``.
271
272   *kwargs* is a dictionary of keyword arguments for the target invocation.
273   Defaults to ``{}``.
274
275   If not ``None``, *daemon* explicitly sets whether the thread is daemonic.
276   If ``None`` (the default), the daemonic property is inherited from the
277   current thread.
278
279   If the subclass overrides the constructor, it must make sure to invoke the
280   base class constructor (``Thread.__init__()``) before doing anything else to
281   the thread.
282
283   .. versionchanged:: 3.3
284      Added the *daemon* argument.
285
286   .. method:: start()
287
288      Start the thread's activity.
289
290      It must be called at most once per thread object.  It arranges for the
291      object's :meth:`~Thread.run` method to be invoked in a separate thread
292      of control.
293
294      This method will raise a :exc:`RuntimeError` if called more than once
295      on the same thread object.
296
297   .. method:: run()
298
299      Method representing the thread's activity.
300
301      You may override this method in a subclass.  The standard :meth:`run`
302      method invokes the callable object passed to the object's constructor as
303      the *target* argument, if any, with positional and keyword arguments taken
304      from the *args* and *kwargs* arguments, respectively.
305
306   .. method:: join(timeout=None)
307
308      Wait until the thread terminates. This blocks the calling thread until
309      the thread whose :meth:`~Thread.join` method is called terminates -- either
310      normally or through an unhandled exception -- or until the optional
311      timeout occurs.
312
313      When the *timeout* argument is present and not ``None``, it should be a
314      floating point number specifying a timeout for the operation in seconds
315      (or fractions thereof). As :meth:`~Thread.join` always returns ``None``,
316      you must call :meth:`~Thread.is_alive` after :meth:`~Thread.join` to
317      decide whether a timeout happened -- if the thread is still alive, the
318      :meth:`~Thread.join` call timed out.
319
320      When the *timeout* argument is not present or ``None``, the operation will
321      block until the thread terminates.
322
323      A thread can be :meth:`~Thread.join`\ ed many times.
324
325      :meth:`~Thread.join` raises a :exc:`RuntimeError` if an attempt is made
326      to join the current thread as that would cause a deadlock. It is also
327      an error to :meth:`~Thread.join` a thread before it has been started
328      and attempts to do so raise the same exception.
329
330   .. attribute:: name
331
332      A string used for identification purposes only. It has no semantics.
333      Multiple threads may be given the same name.  The initial name is set by
334      the constructor.
335
336   .. method:: getName()
337               setName()
338
339      Old getter/setter API for :attr:`~Thread.name`; use it directly as a
340      property instead.
341
342   .. attribute:: ident
343
344      The 'thread identifier' of this thread or ``None`` if the thread has not
345      been started.  This is a nonzero integer.  See the :func:`get_ident`
346      function.  Thread identifiers may be recycled when a thread exits and
347      another thread is created.  The identifier is available even after the
348      thread has exited.
349
350   .. attribute:: native_id
351
352      The native integral thread ID of this thread.
353      This is a non-negative integer, or ``None`` if the thread has not
354      been started. See the :func:`get_native_id` function.
355      This represents the Thread ID (``TID``) as assigned to the
356      thread by the OS (kernel).  Its value may be used to uniquely identify
357      this particular thread system-wide (until the thread terminates,
358      after which the value may be recycled by the OS).
359
360      .. note::
361
362         Similar to Process IDs, Thread IDs are only valid (guaranteed unique
363         system-wide) from the time the thread is created until the thread
364         has been terminated.
365
366      .. availability:: Requires :func:`get_native_id` function.
367
368      .. versionadded:: 3.8
369
370   .. method:: is_alive()
371
372      Return whether the thread is alive.
373
374      This method returns ``True`` just before the :meth:`~Thread.run` method
375      starts until just after the :meth:`~Thread.run` method terminates.  The
376      module function :func:`.enumerate` returns a list of all alive threads.
377
378   .. attribute:: daemon
379
380      A boolean value indicating whether this thread is a daemon thread (True)
381      or not (False).  This must be set before :meth:`~Thread.start` is called,
382      otherwise :exc:`RuntimeError` is raised.  Its initial value is inherited
383      from the creating thread; the main thread is not a daemon thread and
384      therefore all threads created in the main thread default to
385      :attr:`~Thread.daemon` = ``False``.
386
387      The entire Python program exits when no alive non-daemon threads are left.
388
389   .. method:: isDaemon()
390               setDaemon()
391
392      Old getter/setter API for :attr:`~Thread.daemon`; use it directly as a
393      property instead.
394
395
396.. impl-detail::
397
398   In CPython, due to the :term:`Global Interpreter Lock`, only one thread
399   can execute Python code at once (even though certain performance-oriented
400   libraries might overcome this limitation).
401   If you want your application to make better use of the computational
402   resources of multi-core machines, you are advised to use
403   :mod:`multiprocessing` or :class:`concurrent.futures.ProcessPoolExecutor`.
404   However, threading is still an appropriate model if you want to run
405   multiple I/O-bound tasks simultaneously.
406
407
408.. _lock-objects:
409
410Lock Objects
411------------
412
413A primitive lock is a synchronization primitive that is not owned by a
414particular thread when locked.  In Python, it is currently the lowest level
415synchronization primitive available, implemented directly by the :mod:`_thread`
416extension module.
417
418A primitive lock is in one of two states, "locked" or "unlocked". It is created
419in the unlocked state.  It has two basic methods, :meth:`~Lock.acquire` and
420:meth:`~Lock.release`.  When the state is unlocked, :meth:`~Lock.acquire`
421changes the state to locked and returns immediately.  When the state is locked,
422:meth:`~Lock.acquire` blocks until a call to :meth:`~Lock.release` in another
423thread changes it to unlocked, then the :meth:`~Lock.acquire` call resets it
424to locked and returns.  The :meth:`~Lock.release` method should only be
425called in the locked state; it changes the state to unlocked and returns
426immediately. If an attempt is made to release an unlocked lock, a
427:exc:`RuntimeError` will be raised.
428
429Locks also support the :ref:`context management protocol <with-locks>`.
430
431When more than one thread is blocked in :meth:`~Lock.acquire` waiting for the
432state to turn to unlocked, only one thread proceeds when a :meth:`~Lock.release`
433call resets the state to unlocked; which one of the waiting threads proceeds
434is not defined, and may vary across implementations.
435
436All methods are executed atomically.
437
438
439.. class:: Lock()
440
441   The class implementing primitive lock objects.  Once a thread has acquired a
442   lock, subsequent attempts to acquire it block, until it is released; any
443   thread may release it.
444
445   Note that ``Lock`` is actually a factory function which returns an instance
446   of the most efficient version of the concrete Lock class that is supported
447   by the platform.
448
449
450   .. method:: acquire(blocking=True, timeout=-1)
451
452      Acquire a lock, blocking or non-blocking.
453
454      When invoked with the *blocking* argument set to ``True`` (the default),
455      block until the lock is unlocked, then set it to locked and return ``True``.
456
457      When invoked with the *blocking* argument set to ``False``, do not block.
458      If a call with *blocking* set to ``True`` would block, return ``False``
459      immediately; otherwise, set the lock to locked and return ``True``.
460
461      When invoked with the floating-point *timeout* argument set to a positive
462      value, block for at most the number of seconds specified by *timeout*
463      and as long as the lock cannot be acquired.  A *timeout* argument of ``-1``
464      specifies an unbounded wait.  It is forbidden to specify a *timeout*
465      when *blocking* is false.
466
467      The return value is ``True`` if the lock is acquired successfully,
468      ``False`` if not (for example if the *timeout* expired).
469
470      .. versionchanged:: 3.2
471         The *timeout* parameter is new.
472
473      .. versionchanged:: 3.2
474         Lock acquisition can now be interrupted by signals on POSIX if the
475         underlying threading implementation supports it.
476
477
478   .. method:: release()
479
480      Release a lock.  This can be called from any thread, not only the thread
481      which has acquired the lock.
482
483      When the lock is locked, reset it to unlocked, and return.  If any other threads
484      are blocked waiting for the lock to become unlocked, allow exactly one of them
485      to proceed.
486
487      When invoked on an unlocked lock, a :exc:`RuntimeError` is raised.
488
489      There is no return value.
490
491   .. method:: locked()
492
493      Return true if the lock is acquired.
494
495
496
497.. _rlock-objects:
498
499RLock Objects
500-------------
501
502A reentrant lock is a synchronization primitive that may be acquired multiple
503times by the same thread.  Internally, it uses the concepts of "owning thread"
504and "recursion level" in addition to the locked/unlocked state used by primitive
505locks.  In the locked state, some thread owns the lock; in the unlocked state,
506no thread owns it.
507
508To lock the lock, a thread calls its :meth:`~RLock.acquire` method; this
509returns once the thread owns the lock.  To unlock the lock, a thread calls
510its :meth:`~Lock.release` method. :meth:`~Lock.acquire`/:meth:`~Lock.release`
511call pairs may be nested; only the final :meth:`~Lock.release` (the
512:meth:`~Lock.release` of the outermost pair) resets the lock to unlocked and
513allows another thread blocked in :meth:`~Lock.acquire` to proceed.
514
515Reentrant locks also support the :ref:`context management protocol <with-locks>`.
516
517
518.. class:: RLock()
519
520   This class implements reentrant lock objects.  A reentrant lock must be
521   released by the thread that acquired it.  Once a thread has acquired a
522   reentrant lock, the same thread may acquire it again without blocking; the
523   thread must release it once for each time it has acquired it.
524
525   Note that ``RLock`` is actually a factory function which returns an instance
526   of the most efficient version of the concrete RLock class that is supported
527   by the platform.
528
529
530   .. method:: acquire(blocking=True, timeout=-1)
531
532      Acquire a lock, blocking or non-blocking.
533
534      When invoked without arguments: if this thread already owns the lock, increment
535      the recursion level by one, and return immediately.  Otherwise, if another
536      thread owns the lock, block until the lock is unlocked.  Once the lock is
537      unlocked (not owned by any thread), then grab ownership, set the recursion level
538      to one, and return.  If more than one thread is blocked waiting until the lock
539      is unlocked, only one at a time will be able to grab ownership of the lock.
540      There is no return value in this case.
541
542      When invoked with the *blocking* argument set to true, do the same thing as when
543      called without arguments, and return ``True``.
544
545      When invoked with the *blocking* argument set to false, do not block.  If a call
546      without an argument would block, return ``False`` immediately; otherwise, do the
547      same thing as when called without arguments, and return ``True``.
548
549      When invoked with the floating-point *timeout* argument set to a positive
550      value, block for at most the number of seconds specified by *timeout*
551      and as long as the lock cannot be acquired.  Return ``True`` if the lock has
552      been acquired, false if the timeout has elapsed.
553
554      .. versionchanged:: 3.2
555         The *timeout* parameter is new.
556
557
558   .. method:: release()
559
560      Release a lock, decrementing the recursion level.  If after the decrement it is
561      zero, reset the lock to unlocked (not owned by any thread), and if any other
562      threads are blocked waiting for the lock to become unlocked, allow exactly one
563      of them to proceed.  If after the decrement the recursion level is still
564      nonzero, the lock remains locked and owned by the calling thread.
565
566      Only call this method when the calling thread owns the lock. A
567      :exc:`RuntimeError` is raised if this method is called when the lock is
568      unlocked.
569
570      There is no return value.
571
572
573.. _condition-objects:
574
575Condition Objects
576-----------------
577
578A condition variable is always associated with some kind of lock; this can be
579passed in or one will be created by default.  Passing one in is useful when
580several condition variables must share the same lock.  The lock is part of
581the condition object: you don't have to track it separately.
582
583A condition variable obeys the :ref:`context management protocol <with-locks>`:
584using the ``with`` statement acquires the associated lock for the duration of
585the enclosed block.  The :meth:`~Condition.acquire` and
586:meth:`~Condition.release` methods also call the corresponding methods of
587the associated lock.
588
589Other methods must be called with the associated lock held.  The
590:meth:`~Condition.wait` method releases the lock, and then blocks until
591another thread awakens it by calling :meth:`~Condition.notify` or
592:meth:`~Condition.notify_all`.  Once awakened, :meth:`~Condition.wait`
593re-acquires the lock and returns.  It is also possible to specify a timeout.
594
595The :meth:`~Condition.notify` method wakes up one of the threads waiting for
596the condition variable, if any are waiting.  The :meth:`~Condition.notify_all`
597method wakes up all threads waiting for the condition variable.
598
599Note: the :meth:`~Condition.notify` and :meth:`~Condition.notify_all` methods
600don't release the lock; this means that the thread or threads awakened will
601not return from their :meth:`~Condition.wait` call immediately, but only when
602the thread that called :meth:`~Condition.notify` or :meth:`~Condition.notify_all`
603finally relinquishes ownership of the lock.
604
605The typical programming style using condition variables uses the lock to
606synchronize access to some shared state; threads that are interested in a
607particular change of state call :meth:`~Condition.wait` repeatedly until they
608see the desired state, while threads that modify the state call
609:meth:`~Condition.notify` or :meth:`~Condition.notify_all` when they change
610the state in such a way that it could possibly be a desired state for one
611of the waiters.  For example, the following code is a generic
612producer-consumer situation with unlimited buffer capacity::
613
614   # Consume one item
615   with cv:
616       while not an_item_is_available():
617           cv.wait()
618       get_an_available_item()
619
620   # Produce one item
621   with cv:
622       make_an_item_available()
623       cv.notify()
624
625The ``while`` loop checking for the application's condition is necessary
626because :meth:`~Condition.wait` can return after an arbitrary long time,
627and the condition which prompted the :meth:`~Condition.notify` call may
628no longer hold true.  This is inherent to multi-threaded programming.  The
629:meth:`~Condition.wait_for` method can be used to automate the condition
630checking, and eases the computation of timeouts::
631
632   # Consume an item
633   with cv:
634       cv.wait_for(an_item_is_available)
635       get_an_available_item()
636
637To choose between :meth:`~Condition.notify` and :meth:`~Condition.notify_all`,
638consider whether one state change can be interesting for only one or several
639waiting threads.  E.g. in a typical producer-consumer situation, adding one
640item to the buffer only needs to wake up one consumer thread.
641
642
643.. class:: Condition(lock=None)
644
645   This class implements condition variable objects.  A condition variable
646   allows one or more threads to wait until they are notified by another thread.
647
648   If the *lock* argument is given and not ``None``, it must be a :class:`Lock`
649   or :class:`RLock` object, and it is used as the underlying lock.  Otherwise,
650   a new :class:`RLock` object is created and used as the underlying lock.
651
652   .. versionchanged:: 3.3
653      changed from a factory function to a class.
654
655   .. method:: acquire(*args)
656
657      Acquire the underlying lock. This method calls the corresponding method on
658      the underlying lock; the return value is whatever that method returns.
659
660   .. method:: release()
661
662      Release the underlying lock. This method calls the corresponding method on
663      the underlying lock; there is no return value.
664
665   .. method:: wait(timeout=None)
666
667      Wait until notified or until a timeout occurs. If the calling thread has
668      not acquired the lock when this method is called, a :exc:`RuntimeError` is
669      raised.
670
671      This method releases the underlying lock, and then blocks until it is
672      awakened by a :meth:`notify` or :meth:`notify_all` call for the same
673      condition variable in another thread, or until the optional timeout
674      occurs.  Once awakened or timed out, it re-acquires the lock and returns.
675
676      When the *timeout* argument is present and not ``None``, it should be a
677      floating point number specifying a timeout for the operation in seconds
678      (or fractions thereof).
679
680      When the underlying lock is an :class:`RLock`, it is not released using
681      its :meth:`release` method, since this may not actually unlock the lock
682      when it was acquired multiple times recursively.  Instead, an internal
683      interface of the :class:`RLock` class is used, which really unlocks it
684      even when it has been recursively acquired several times. Another internal
685      interface is then used to restore the recursion level when the lock is
686      reacquired.
687
688      The return value is ``True`` unless a given *timeout* expired, in which
689      case it is ``False``.
690
691      .. versionchanged:: 3.2
692         Previously, the method always returned ``None``.
693
694   .. method:: wait_for(predicate, timeout=None)
695
696      Wait until a condition evaluates to true.  *predicate* should be a
697      callable which result will be interpreted as a boolean value.
698      A *timeout* may be provided giving the maximum time to wait.
699
700      This utility method may call :meth:`wait` repeatedly until the predicate
701      is satisfied, or until a timeout occurs. The return value is
702      the last return value of the predicate and will evaluate to
703      ``False`` if the method timed out.
704
705      Ignoring the timeout feature, calling this method is roughly equivalent to
706      writing::
707
708        while not predicate():
709            cv.wait()
710
711      Therefore, the same rules apply as with :meth:`wait`: The lock must be
712      held when called and is re-acquired on return.  The predicate is evaluated
713      with the lock held.
714
715      .. versionadded:: 3.2
716
717   .. method:: notify(n=1)
718
719      By default, wake up one thread waiting on this condition, if any.  If the
720      calling thread has not acquired the lock when this method is called, a
721      :exc:`RuntimeError` is raised.
722
723      This method wakes up at most *n* of the threads waiting for the condition
724      variable; it is a no-op if no threads are waiting.
725
726      The current implementation wakes up exactly *n* threads, if at least *n*
727      threads are waiting.  However, it's not safe to rely on this behavior.
728      A future, optimized implementation may occasionally wake up more than
729      *n* threads.
730
731      Note: an awakened thread does not actually return from its :meth:`wait`
732      call until it can reacquire the lock.  Since :meth:`notify` does not
733      release the lock, its caller should.
734
735   .. method:: notify_all()
736
737      Wake up all threads waiting on this condition.  This method acts like
738      :meth:`notify`, but wakes up all waiting threads instead of one. If the
739      calling thread has not acquired the lock when this method is called, a
740      :exc:`RuntimeError` is raised.
741
742
743.. _semaphore-objects:
744
745Semaphore Objects
746-----------------
747
748This is one of the oldest synchronization primitives in the history of computer
749science, invented by the early Dutch computer scientist Edsger W. Dijkstra (he
750used the names ``P()`` and ``V()`` instead of :meth:`~Semaphore.acquire` and
751:meth:`~Semaphore.release`).
752
753A semaphore manages an internal counter which is decremented by each
754:meth:`~Semaphore.acquire` call and incremented by each :meth:`~Semaphore.release`
755call.  The counter can never go below zero; when :meth:`~Semaphore.acquire`
756finds that it is zero, it blocks, waiting until some other thread calls
757:meth:`~Semaphore.release`.
758
759Semaphores also support the :ref:`context management protocol <with-locks>`.
760
761
762.. class:: Semaphore(value=1)
763
764   This class implements semaphore objects.  A semaphore manages an atomic
765   counter representing the number of :meth:`release` calls minus the number of
766   :meth:`acquire` calls, plus an initial value.  The :meth:`acquire` method
767   blocks if necessary until it can return without making the counter negative.
768   If not given, *value* defaults to 1.
769
770   The optional argument gives the initial *value* for the internal counter; it
771   defaults to ``1``. If the *value* given is less than 0, :exc:`ValueError` is
772   raised.
773
774   .. versionchanged:: 3.3
775      changed from a factory function to a class.
776
777   .. method:: acquire(blocking=True, timeout=None)
778
779      Acquire a semaphore.
780
781      When invoked without arguments:
782
783      * If the internal counter is larger than zero on entry, decrement it by
784        one and return ``True`` immediately.
785      * If the internal counter is zero on entry, block until awoken by a call to
786        :meth:`~Semaphore.release`.  Once awoken (and the counter is greater
787        than 0), decrement the counter by 1 and return ``True``.  Exactly one
788        thread will be awoken by each call to :meth:`~Semaphore.release`.  The
789        order in which threads are awoken should not be relied on.
790
791      When invoked with *blocking* set to false, do not block.  If a call
792      without an argument would block, return ``False`` immediately; otherwise, do
793      the same thing as when called without arguments, and return ``True``.
794
795      When invoked with a *timeout* other than ``None``, it will block for at
796      most *timeout* seconds.  If acquire does not complete successfully in
797      that interval, return ``False``.  Return ``True`` otherwise.
798
799      .. versionchanged:: 3.2
800         The *timeout* parameter is new.
801
802   .. method:: release()
803
804      Release a semaphore, incrementing the internal counter by one.  When it
805      was zero on entry and another thread is waiting for it to become larger
806      than zero again, wake up that thread.
807
808
809.. class:: BoundedSemaphore(value=1)
810
811   Class implementing bounded semaphore objects.  A bounded semaphore checks to
812   make sure its current value doesn't exceed its initial value.  If it does,
813   :exc:`ValueError` is raised. In most situations semaphores are used to guard
814   resources with limited capacity.  If the semaphore is released too many times
815   it's a sign of a bug.  If not given, *value* defaults to 1.
816
817   .. versionchanged:: 3.3
818      changed from a factory function to a class.
819
820
821.. _semaphore-examples:
822
823:class:`Semaphore` Example
824^^^^^^^^^^^^^^^^^^^^^^^^^^
825
826Semaphores are often used to guard resources with limited capacity, for example,
827a database server.  In any situation where the size of the resource is fixed,
828you should use a bounded semaphore.  Before spawning any worker threads, your
829main thread would initialize the semaphore::
830
831   maxconnections = 5
832   # ...
833   pool_sema = BoundedSemaphore(value=maxconnections)
834
835Once spawned, worker threads call the semaphore's acquire and release methods
836when they need to connect to the server::
837
838   with pool_sema:
839       conn = connectdb()
840       try:
841           # ... use connection ...
842       finally:
843           conn.close()
844
845The use of a bounded semaphore reduces the chance that a programming error which
846causes the semaphore to be released more than it's acquired will go undetected.
847
848
849.. _event-objects:
850
851Event Objects
852-------------
853
854This is one of the simplest mechanisms for communication between threads: one
855thread signals an event and other threads wait for it.
856
857An event object manages an internal flag that can be set to true with the
858:meth:`~Event.set` method and reset to false with the :meth:`~Event.clear`
859method.  The :meth:`~Event.wait` method blocks until the flag is true.
860
861
862.. class:: Event()
863
864   Class implementing event objects.  An event manages a flag that can be set to
865   true with the :meth:`~Event.set` method and reset to false with the
866   :meth:`clear` method.  The :meth:`wait` method blocks until the flag is true.
867   The flag is initially false.
868
869   .. versionchanged:: 3.3
870      changed from a factory function to a class.
871
872   .. method:: is_set()
873
874      Return ``True`` if and only if the internal flag is true.
875
876   .. method:: set()
877
878      Set the internal flag to true. All threads waiting for it to become true
879      are awakened. Threads that call :meth:`wait` once the flag is true will
880      not block at all.
881
882   .. method:: clear()
883
884      Reset the internal flag to false. Subsequently, threads calling
885      :meth:`wait` will block until :meth:`.set` is called to set the internal
886      flag to true again.
887
888   .. method:: wait(timeout=None)
889
890      Block until the internal flag is true.  If the internal flag is true on
891      entry, return immediately.  Otherwise, block until another thread calls
892      :meth:`.set` to set the flag to true, or until the optional timeout occurs.
893
894      When the timeout argument is present and not ``None``, it should be a
895      floating point number specifying a timeout for the operation in seconds
896      (or fractions thereof).
897
898      This method returns ``True`` if and only if the internal flag has been set to
899      true, either before the wait call or after the wait starts, so it will
900      always return ``True`` except if a timeout is given and the operation
901      times out.
902
903      .. versionchanged:: 3.1
904         Previously, the method always returned ``None``.
905
906
907.. _timer-objects:
908
909Timer Objects
910-------------
911
912This class represents an action that should be run only after a certain amount
913of time has passed --- a timer.  :class:`Timer` is a subclass of :class:`Thread`
914and as such also functions as an example of creating custom threads.
915
916Timers are started, as with threads, by calling their :meth:`~Timer.start`
917method.  The timer can be stopped (before its action has begun) by calling the
918:meth:`~Timer.cancel` method.  The interval the timer will wait before
919executing its action may not be exactly the same as the interval specified by
920the user.
921
922For example::
923
924   def hello():
925       print("hello, world")
926
927   t = Timer(30.0, hello)
928   t.start()  # after 30 seconds, "hello, world" will be printed
929
930
931.. class:: Timer(interval, function, args=None, kwargs=None)
932
933   Create a timer that will run *function* with arguments *args* and  keyword
934   arguments *kwargs*, after *interval* seconds have passed.
935   If *args* is ``None`` (the default) then an empty list will be used.
936   If *kwargs* is ``None`` (the default) then an empty dict will be used.
937
938   .. versionchanged:: 3.3
939      changed from a factory function to a class.
940
941   .. method:: cancel()
942
943      Stop the timer, and cancel the execution of the timer's action.  This will
944      only work if the timer is still in its waiting stage.
945
946
947Barrier Objects
948---------------
949
950.. versionadded:: 3.2
951
952This class provides a simple synchronization primitive for use by a fixed number
953of threads that need to wait for each other.  Each of the threads tries to pass
954the barrier by calling the :meth:`~Barrier.wait` method and will block until
955all of the threads have made their :meth:`~Barrier.wait` calls. At this point,
956the threads are released simultaneously.
957
958The barrier can be reused any number of times for the same number of threads.
959
960As an example, here is a simple way to synchronize a client and server thread::
961
962   b = Barrier(2, timeout=5)
963
964   def server():
965       start_server()
966       b.wait()
967       while True:
968           connection = accept_connection()
969           process_server_connection(connection)
970
971   def client():
972       b.wait()
973       while True:
974           connection = make_connection()
975           process_client_connection(connection)
976
977
978.. class:: Barrier(parties, action=None, timeout=None)
979
980   Create a barrier object for *parties* number of threads.  An *action*, when
981   provided, is a callable to be called by one of the threads when they are
982   released.  *timeout* is the default timeout value if none is specified for
983   the :meth:`wait` method.
984
985   .. method:: wait(timeout=None)
986
987      Pass the barrier.  When all the threads party to the barrier have called
988      this function, they are all released simultaneously.  If a *timeout* is
989      provided, it is used in preference to any that was supplied to the class
990      constructor.
991
992      The return value is an integer in the range 0 to *parties* -- 1, different
993      for each thread.  This can be used to select a thread to do some special
994      housekeeping, e.g.::
995
996         i = barrier.wait()
997         if i == 0:
998             # Only one thread needs to print this
999             print("passed the barrier")
1000
1001      If an *action* was provided to the constructor, one of the threads will
1002      have called it prior to being released.  Should this call raise an error,
1003      the barrier is put into the broken state.
1004
1005      If the call times out, the barrier is put into the broken state.
1006
1007      This method may raise a :class:`BrokenBarrierError` exception if the
1008      barrier is broken or reset while a thread is waiting.
1009
1010   .. method:: reset()
1011
1012      Return the barrier to the default, empty state.  Any threads waiting on it
1013      will receive the :class:`BrokenBarrierError` exception.
1014
1015      Note that using this function may require some external
1016      synchronization if there are other threads whose state is unknown.  If a
1017      barrier is broken it may be better to just leave it and create a new one.
1018
1019   .. method:: abort()
1020
1021      Put the barrier into a broken state.  This causes any active or future
1022      calls to :meth:`wait` to fail with the :class:`BrokenBarrierError`.  Use
1023      this for example if one of the threads needs to abort, to avoid deadlocking the
1024      application.
1025
1026      It may be preferable to simply create the barrier with a sensible
1027      *timeout* value to automatically guard against one of the threads going
1028      awry.
1029
1030   .. attribute:: parties
1031
1032      The number of threads required to pass the barrier.
1033
1034   .. attribute:: n_waiting
1035
1036      The number of threads currently waiting in the barrier.
1037
1038   .. attribute:: broken
1039
1040      A boolean that is ``True`` if the barrier is in the broken state.
1041
1042
1043.. exception:: BrokenBarrierError
1044
1045   This exception, a subclass of :exc:`RuntimeError`, is raised when the
1046   :class:`Barrier` object is reset or broken.
1047
1048
1049.. _with-locks:
1050
1051Using locks, conditions, and semaphores in the :keyword:`!with` statement
1052-------------------------------------------------------------------------
1053
1054All of the objects provided by this module that have :meth:`acquire` and
1055:meth:`release` methods can be used as context managers for a :keyword:`with`
1056statement.  The :meth:`acquire` method will be called when the block is
1057entered, and :meth:`release` will be called when the block is exited.  Hence,
1058the following snippet::
1059
1060   with some_lock:
1061       # do something...
1062
1063is equivalent to::
1064
1065   some_lock.acquire()
1066   try:
1067       # do something...
1068   finally:
1069       some_lock.release()
1070
1071Currently, :class:`Lock`, :class:`RLock`, :class:`Condition`,
1072:class:`Semaphore`, and :class:`BoundedSemaphore` objects may be used as
1073:keyword:`with` statement context managers.
1074