• 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()
  • 相关阅读:
    Javascript位运算符
    自定义控件基础2
    Javascript原型链实现继承
    Javascript如何实现水印效果
    CSS详解position(1)
    Javascript对象冒充实现继承
    Javascript节点类型
    实用技巧chm无法搜索
    Javascript定义类或对象
    深入理解JavaScript系列
  • 原文地址:https://www.cnblogs.com/angelyan/p/11374232.html
Copyright © 2020-2023  润新知