知行编程网知行编程网  2022-12-28 01:00 知行编程网 隐藏边栏  1 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python如何实现线程条件同步的相关知识,希望可以帮到处于编程学习途中的小伙伴


Python如何实现线程条件同步


同步条件

条件同步与条件变量同步类似,只是少了锁功能,因为条件同步是在不访问共享资源的条件环境下设计的。 event=threading.Event():条件环境对象,初始值为False;

event.isSet():返回event的状态值;

event.wait():如果 event.isSet()==False将阻塞线程;

event.set():设置事件的状态值为True,阻塞池中的所有线程都被激活,进入就绪状态,等待操作系统调度;

event.clear():恢复event的状态值为False。

import threading, time
class Boss(threading.Thread):
    def run(self):
        print("BOSS: 今晚大家加班")
        event.isSet() or event.set()
        time.sleep(5)
        print("BOSS: 大家可以下班了")
        event.isSet() or event.set()
class Worker(threading.Thread):
    def run(self):
        event.wait()
        print("Worker: 唉。。。。")
        time.sleep(0.25)
        event.clear()
        event.wait()
        print("Worker: Great!")
if __name__ == "__main__":
    event = threading.Event()
    threads = []
    for i in range(5):
        threads.append(Worker())
    threads.append(Boss())
    for t in threads:
        t.start()
    for t in threads:
        t.join()

运行结果:

BOSS: 今晚大家加班
Worker: 唉。。。。
Worker: 唉。。。。
Worker: 唉。。。。
Worker: 唉。。。。
Worker: 唉。。。。
BOSS: 大家可以下班了
Worker: Great!
Worker: Great!
Worker: Great!
Worker: Great!
Worker: Great!

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享