线程的一个关键特性是每个线程都是独立运行且状态不可预测。
如果程序中的其他线程需要通过判断某个线程的状态来确定自己下一步的操作,这时我们需要使用threading库中的Event对象。
event.set():设置事件状态为True
event.wait ():等待event.set 把事件状态设置为True
event.is_set():检查事件状态是否为True
#事件
from threading import Thread,current_thread,Event
import threading
import time,random
def conn_mysql():
count=1
while not event.is_set():
if count>2:
break
print("%s 第%s次 尝试链接" %(current_thread().getName(),count))
event.wait(0.1)
count+=1
print("%s 第%s次 链接成功" %(current_thread().getName(),count))
def check_mysql():
print("%s 正在检查mysql"%current_thread().getName())
time.sleep(random.randint(1,2))
event.set()
if __name__=="__main__":
event=Event()
conn1=Thread(target=conn_mysql)
conn2=Thread(target=conn_mysql)
check=Thread(target=check_mysql)
conn1.start()
conn2.start()
check.start()
'''
Thread-862 第1次 尝试链接
Thread-861 第1次 尝试链接
Thread-863 正在检查mysql
Thread-861 第2次 尝试链接
Thread-862 第2次 尝试链接
Thread-862 第3次 链接成功
Thread-861 第3次 链接成功
'''
来源:https://www.cnblogs.com/hapyygril/p/12590838.html