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模块也用到了。它的意义在于可以控制属于同一个线程类的多个实例化对象,让他们同时阻塞或者执行。配合队列来实现一个线程池非常好用。

浙公网安备 33010602011771号