码迷,mamicode.com
首页 > 其他好文 > 详细

Event事件

时间:2019-07-12 17:02:40      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:reading   python   int   假设   服务   nec   ted   客户   启动   

线程间状态同步

你把一个任务丢到了子线程中, 这个任务将异步执行 ,如何获取到这个任务的执行状态

执行状态 执行结果不是一个概念

如果需要拿到 执行结果 可以采用异步回调

假设

一个线程 负责启动服务器 启动服务器需要花一定的时间

另一个线程作为客户端 要连接服务器 必须保证服务器已经启动

要获取状态可以采永轮训的方法 但是浪费了CPU资源 而且可能会造成延迟 不能立即获取状态

就可以使用事件来完成状态同步

事件本质就是 一个标志 可以是False 或是True

特殊之处在于 其包含一个wait函数 可以阻塞当前线程 直到状态从False变为True

from threading import  Thread,Event
import time

# is_boot = False
e = Event()


def start_server():
    # global is_boot
    print("starting server......")
    time.sleep(3)
    print("server started!")
    # is_boot = True
    # 修改事件的值为True
    e.set()


def connect_server():
    e.wait() # 等待事件从False 变为true
    if e.is_set():
        print("连接服务器成功!")
    # 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()

Event事件

标签:reading   python   int   假设   服务   nec   ted   客户   启动   

原文地址:https://www.cnblogs.com/chuwanliu/p/11177037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!