python处理多线程之间事件通讯方法
一、什么是事件
每执行一个事情,肯定有该事情的执行后状态,那事件就是该事情发生的信号
在程序中,多线程之间需要通讯,而事件就是方便线程之间的通讯
案例:
1.服务器启动需要5秒
2.客服端启动后去链接服务器
3.连接服务器必须保证服务器已经开启了
二、代码一
#使用全局变量来做判断 import time from threading import Thread boot = False def server_task(): global boot print("正在启动....") time.sleep(5) print("启动....成功") boot = True def 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 time from threading import Thread,Event event =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()