In the following article, we will learn about what is Semaphore (semaphore) in python. Learn about python semaphores and what role Semaphore can play in python programming.
Semaphore(Semaphore)
The mutex only allows one thread to change data at the same time, while Semaphore allows a certain number of threads to change data at the same time. For example, the toilet has 3 What a pit, only 3 people are allowed to go to the toilet at most, and the people behind can only go in after someone comes out.
import threading,time def run(n): semaphore.acquire() time.sleep(1) print("run the thread: %s\n" %n) semaphore.release() if __name__ == '__main__': num= 0 semaphore = threading.BoundedSemaphore(5) #最多允许5个线程同时运行 for i in range(20): t = threading.Thread(target=run,args=(i,)) t.start() while threading.active_count() != 1: pass #print threading.active_count() else: print('----all threads done---') print(num)
Events inter-thread communication
Python provides the Event object for inter-thread communication. It is a signal flag set by the thread. If the signal flag is If true, other threads wait until the signal is touched.
Event object implements a simple thread communication mechanism. It provides setting signals, clearing signals, waiting, etc. for realizing communication between threads.
Usage of Events
event = threading.Event()
##event.wait( )
The wait method of the Event object will execute quickly and complete the return only when the internal signal is true. When the internal signal flag of the Event object is false, the wait method waits until it is true before returning.
event.set()
Use the set() method of Event to set the signal flag inside the Event object to true. The Event object provides the isSet() method to determine the status of its internal signal flags. When using the set() method of the event object, the isSet() method returns true
event.clear()
Using the Event object The clear() method can clear the signal flag inside the Event object, that is, set it to false. When the clear method of Event is used, the isSet() method returns false .
The above is all the content described in this article. This article mainly introduces the relevant knowledge ofpythonSemaphore(Semaphore). I hope you can use the information to understand the above content. . I hope what I have described in this article will be helpful to you and make it easier for you to learn python.
For more related knowledge, please visit thePython tutorial column on the php Chinese website.
The above is the detailed content of What is python Semaphore (semaphore)? (detailed examples). For more information, please follow other related articles on the PHP Chinese website!