问题
加载进程后判断是否实际运行
解决方案
为了判断线程是否执行到了其过程中的某个点,以据此执行后续操作,我们使用threading库中的Event对象。
简单示例
这个实验里‘countdown is running’总会在‘countdown starting’之后出现
from threading import Thread, Event
import time
def countdown(n, started_evt):
print('countdown starting')
started_evt.set()
while n > 0:
print('T-minus', n)
n -= 1
time.sleep(2)
started_evt = Event()
print('Launching countdown')
t = Thread(target=countdown, args=(10, started_evt))
t.start()
started_evt.wait()
print('countdown is running')
执行结果
由于‘countdown is running’在started_evt.wait()之后,所以一定要等待进程开始执行的时刻,这段字符才被打印出来,也就是说这个状态信息是判断进程是否已经运行的标志。这其实就是主线程在等待countdown线程的开始标志,而这个开始标志就是在countdown函数中通过started_evt.set()来设定的。