Home >Backend Development >Python Tutorial >What is python Semaphore (semaphore)? (detailed examples)

What is python Semaphore (semaphore)? (detailed examples)

乌拉乌拉~
乌拉乌拉~Original
2018-08-23 17:42:116668browse

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 of

pythonSemaphore(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 the

Python 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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Related articles

See more