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