zoukankan      html  css  js  c++  java
  • Event事件

    线程间状态同步

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

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

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

    假设

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

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

    要获取状态可以采永轮训的方法 但是浪费了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()
    
  • 相关阅读:
    替换configparser 中指定的值
    configparser 读取与赋值
    接口测试第五步 --》 拼接url
    接口测试第四步 --》 封装excel
    接口测试第三步 --》 封装请求方法
    接口测试第二步 --》 推荐定义一个log 文件
    超级直观理解tcp握手
    crash 潜水
    提高MySQL查询速度
    JSON文件存入MySQL数据库
  • 原文地址:https://www.cnblogs.com/chuwanliu/p/11177037.html
Copyright © 2011-2022 走看看