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

    Python如何实现线程条件同步

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

    同步条件

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

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

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

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

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

    相关推荐:《Python视频教程

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    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()

    运行结果:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    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学习网