A brief introduction to event usage under Python threads
This article brings you an introduction to the usage of events under Python threads. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
Events are used to communicate between threads. One thread sends an [event] signal, and one or more other threads wait for it.
The Event instance manages an internal flag, which can be set to True using the set() method, or reset to False using the clear() method. The wait() method will block until the flag is True.
Syntax:
e=Event() 创建新的Event实例,并将内部标志设置为False。
Common methods:
e.is_set():只有当内部标志设为True时才返回True e.set():将内部标志设置为True。等待它变为True的所有线程都讲被唤醒。 e.clear():将内部标志重置为False。 e.wait(timeout):阻塞直到内部标志为True。如果调用时内部标志为True,此方法将立即返回。 否则,它将阻塞,直到另一个线程调用set()方法将标志设置为True,或者出现可选的超时时。
Note
Although Event objects can be used to send signals to other threads, they should not be used to implement in producers and consumer notifications, such as the following code:evt=Event() def producer(): while True: #生产项 ... evt.signal() def consumer(): while True: #等待一个项 evt.wait() #消费项 ... #清除事件并再次等待 evt.clear()
The above code should be avoided as much as possible, because this code is unreliable, because between the evt.wait() and evt.clear() operations, the producer may produce a New item. However, with clear events, consumers may not see a new item until the producer creates it. The best case scenario is that the program will go through a short pause and processing of the item will be inexplicably delayed. The worst case scenario is that the entire program will hang due to the loss of the event signal. To solve this kind of problem, it's better to use condition variables.
Related recommendations:
A brief introduction to Python multi-threaded programming
##Detailed explanation of python multi-threading, locks, and event event mechanisms Simple use
#Use Python to implement a simple thread pool
The above is the detailed content of A brief introduction to event usage under Python threads. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Regarding the problem of removing the Python interpreter that comes with Linux systems, many Linux distributions will preinstall the Python interpreter when installed, and it does not use the package manager...

Pylance type detection problem solution when using custom decorator In Python programming, decorator is a powerful tool that can be used to add rows...

About Pythonasyncio...

Using python in Linux terminal...

Loading pickle file in Python 3.6 environment error: ModuleNotFoundError:Nomodulenamed...

Compatibility issues between Python asynchronous libraries In Python, asynchronous programming has become the process of high concurrency and I/O...

Error loading Pickle file in Python 3.6 environment: ModuleNotFoundError:Nomodulenamed...

The problem and solution of the child process continuing to run when using signals to kill the parent process. In Python programming, after killing the parent process through signals, the child process still...
