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