• 技术文章 >Python技术 >Python基础教程

    Python如何实现线程条件同步

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-07-06 09:12:34原创2119

    同步条件

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

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

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

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

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

    相关推荐:《Python视频教程

    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!

    相关推荐:

    Python如何实现条件变量同步

    专题推荐:python 线程同步
    上一篇:Python如何实现条件变量同步 下一篇:Python如何实现队列的同步实现

    相关文章推荐

    • Python中的opener()方法是什么• Python之requests模块相关介绍• Python如何实现条件变量同步

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网