首页 / 更多教程 / 并发编程之Event事件
并发编程之Event事件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了并发编程之Event事件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1647字,纯文字阅读大概需要3分钟。
内容图文
Event事件
用来同步线程之间的状态。
举个例子:
? 你把一个任务丢到了子线程中,这个任务将异步执行。如何获取到这个任务的执行状态
解决方法:
- 如果是拿到执行结果 我们可以采用异步回调,
- 在这里我们采用另外一种方法来做:Event
Event事件
第一阶段:采用轮询方式去获取线程状态
"""a线程的任务是:开启服务器,需要3秒钟;b线程的任务是:连接服务器,直到连接成功为止"""
from threading import Thread
import time
is_boot = False
# 开启服务器
def start_server():
global is_boot
print("starting server......")
time.sleep(3)
print("server started!")
is_boot = True
# 连接服务器
def connect_server():
while True:
if is_boot:
print("连接服务器成功")
break
else:
print("失败,服务器未启动!")
time.sleep(0.5)
t1 = Thread(target=start_server)
t2 = Thread(target=connect_server)
t1.start()
t2.start()
starting server......
失败,服务器未启动!
失败,服务器未启动!
失败,服务器未启动!
失败,服务器未启动!
失败,服务器未启动!
失败,服务器未启动!
server started!
连接服务器成功
由此可以看出“连接服务器”函数,非常消耗资源。在多线程中,如果我们要实现等服务器开启完的那一刻,我们再连接上去,这样就能一次性完成连接,这时我们就使用Event事件来完成
第二阶段:采用Event事件
from threading import Thread,Event
import time
# 创建事件
e = Event()
print(e._flag)
# 开启服务器
def start_server():
print("starting server......")
time.sleep(3)
print("server started!")
e.set() # 状态从False 变为 True
print(e._flag)
# 连接服务器
def connect_server():
e.wait() # 等待事件从 false 变为true,当状态发生变化即可执行下面代码
if e.is_set():
print("连接成功")
t1 = Thread(target=start_server)
t2 = Thread(target=connect_server)
t1.start()
t2.start()
False
starting server......
server started!
True
连接成功
内容总结
以上是互联网集市为您收集整理的并发编程之Event事件全部内容,希望文章能够帮你解决并发编程之Event事件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。