• 同步条件Event


    '''同步条件Event'''
    import threading
    import time
    
    class Boss(threading.Thread):
       def run(self):
          print('Boss:今晚大家加班到23:00!')
          print(event.isSet()) # False
          event.set() # ②设置event状态值为True,所有阻塞线程被激活等待操作系统调度
          time.sleep(3)
          print('Boss:22:30大家可以提前下班了!')
          event.set() # ⑤再次将event值设为True
          # print(event.isSet())
    
    class Worker(threading.Thread):
       def run(self):
          event.wait() # ①一开始本应先运行这5个线程,但event.isSet()为False,所以将被阻塞
          print('Worker:哎,又加班,烦死了!')
          time.sleep(1)
          event.clear() # ③event.clear()将event的状态值恢复为False
          event.wait() # ④又被阻塞
          print('Worker:卧槽,终于下班了,大家冲啊!')
    
    if __name__ == '__main__':
       event = threading.Event() # 生成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()
    
       print('ending...')
    '''
    event.isSet():返回event的状态值
    event.wait():如果event.isSet()==False将阻塞线程
    event.set():设置event的状态值为True,所有阻塞池的线程激活进入就绪状态,等待操作系统调度
    event.clear():恢复event的状态值为False
    '''
    # An event is a simple synchronization object;the event represents an internal flag,事件是一个简单的同步对象;事件代表一个内部标志
    # and threads can wait for the flag to be set, or set or clear the flag themselves.并且线程可以等待标志被设置,或者自己设置或清除标志
    # If the flag is set, the wait method doesn’t do anything.如果设置了标志,wait方法不会做任何事情
    # If the flag is cleared, wait will block until it becomes set again.如果标志被清除,wait将阻塞,直到它再次被设置
    # Any number of threads may wait for the same event.任意数量的线程都可以等待同一个事件
    while True: print('studying...')
  • 相关阅读:
    SAP模块
    MVC HtmlHelper 用法
    python篇把python程序打包成apk的完整步骤
    python篇程控电源
    python篇kivy
    CSDN私信太多,如何拉黑,屏蔽,免打扰
    window环境下给centos中配制SSH密钥登录的方法(用winscp上传公钥文件,简单方便)
    日志消息的级别
    Ubuntu2004更换国内源方法
    一文搞定Vue脚手架(vuecli)的安装配置、项目创建及常见错误解决
  • 原文地址:https://www.cnblogs.com/xuewei95/p/14859930.html
Copyright © 2020-2023  润新知