python thread.event()简单示例

#-*-coding:utf-8-*-
import threading
import time
event = threading.Event()
def func():
    # 等待事件,进入等待阻塞状态
    print( '%s wait for event...' % threading.currentThread().getName() )
    event.wait()
    # 收到事件后进入运行状态
    print( '%s recv event.' % threading.currentThread().getName())
t1 = threading.Thread(target=func)
t2 = threading.Thread(target=func)
t1.start()
t2.start()

time.sleep(2)
# 发送事件通知
print ('MainThread set event.')
event.set()

 执行结果

Event类:通用的条件变量。多个线程可以等待某个事件的发生,在事件发生后,所有的线程都会被激活。

  • event.wait(timeout)  当Flag为‘False’时,线程将被阻塞
  • clear                    将“Flag”设置为False
  • set                      将“Flag”设置为True
  • is_set                         返回当前‘Flag’

   这是一个比较关键的类,我在写线程池的时候看到python的threadpool模块也用到了。它的意义在于可以控制属于同一个线程类的多个实例化对象,让他们同时阻塞或者执行。配合队列来实现一个线程池非常好用。

原文地址:https://www.cnblogs.com/qxh-beijing2016/p/14971636.html