一、什么是事件
每执行一个事情,肯定有该事情的执行后状态,那事件就是该事情发生的信号
在程序中,多线程之间需要通讯,而事件就是方便线程之间的通讯
案例:
1.服务器启动需要5秒
2.客服端启动后去链接服务器
3.连接服务器必须保证服务器已经开启了
二、代码一
#使用全局变量来做判断import timefrom threading import Threadboot = Falsedef server_task(): global boot print("正在启动....") time.sleep(5) print("启动....成功") boot = Truedef client_task(): while True: print("连接服务器....") time.sleep(1) if boot: print("连接成功") break else: print("error 连接失败 服务器未启动!!")t1 = Thread(target=server_task)t1.start()t2 = Thread(target=client_task)t2.start()t1.join()t2.join()
三、代码二
# 使用事件实现#注意:event线程通讯仅仅用于简单的条件判断#set()将状态修改为true#wait()将状态修改为ture才继续执行下一步import timefrom threading import Thread,Eventevent =Event()def server_task(): print("正在启动....") time.sleep(5) print("启动....成功") event.set()def client_task(): event.wait() #一个阻塞的函数 会阻塞直到对event执行set函数为止 print("连接成功!")t1 = Thread(target=server_task)t1.start()t2 = Thread(target=client_task)t2.start()