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()

 

转载于:https://www.cnblogs.com/angelyan/p/11374232.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值