zoukankan      html  css  js  c++  java
  • 五.并发编程 (线程事件)

    一. 线程事件(Event)

    1. 线程事件方法等

    事件对象管理一个内部标志,通过set()方法将其设置为True,并使用clear()方法将其设置为False。wait()方法阻塞,直到标志为True。该标志初始为False。
    方法:
    is_set()
    当且仅当内部标志为True时返回True。
    set()
    将内部标志设置为True。所有等待它成为True的线程都被唤醒。当标志保持在True的状态时,线程调用wait()是不会阻塞的。
    clear()
    将内部标志重置为False。随后,调用wait()的线程将阻塞,直到另一个线程调用set()将内部标志重新设置为True。
    wait(timeout=None)
    阻塞直到内部标志为真。如果内部标志在wait()方法调用时为True,则立即返回。否则,则阻塞,直到另一个线程调用set()将标志设置为True,或发生超时。
    该方法总是返回True,除非设置了timeout并发生超时。
    from  threading import Thread,Event
    import time
    
    def db(e):
        e.wait()  # 默认是false
        if e.is_set()==True:
            print("连接成功了哈哈哈")
    
    def web(e):
        print("数据网络开始正常")
        time.sleep(1)
        e.set()    # #执行set则为开启状态  True
    
    e=Event()
    p=Thread(target=web,args=(e,))
    p1=Thread(target=db,args=(e,))
    p.start()
    p1.start()
    
    # 数据网络开始正常
    # 连接成功了哈哈哈
    # 
    # 进程已结束,退出代码 0
    import threading,time
    
    event = threading.Event() # '''事件默认是关闭状态,执行set则为开启状态''
    def a():
        print("我是第一个线程函数a,我在等待函数b来触发我...")
        event.wait()       #  默认是Fale 开启后就是True
        print("函数a说:尼玛!我被函数b给触发了...")
    
    def b():
        print("我是第二个线程函数b,我开始去触发函数a...")
        time.sleep(1)
        event.set()  # #执行set则为开启状态  True
    
    
    p = threading.Thread(target=a)
    c = threading.Thread(target=b)
    p.start()
    c.start()
    # 
    # 我是第一个线程函数a,我在等待函数b来触发我...
    # 我是第二个线程函数b,我开始去触发函数a...
    # 函数a说:尼玛!我被函数b给触发了...
    用事件连接数据

    from
    threading import Thread,Event import time def db(e): count=0 while count<3: e.wait() # 默认是false if e.is_set()==True: print("连接成功了哈哈哈") break else: count+=1 print("你数据库连接%s失败"%count) else: raise TimeoutError("连接超时!!!!!!!!!!!!") def web(e): print("数据网络开始正常") time.sleep(1) e.set() # #执行set则为开启状态 True e=Event() p=Thread(target=web,args=(e,)) p1=Thread(target=db,args=(e,)) p.start() p1.start() # 数据网络开始正常 # 连接成功了哈哈哈 # # 进程已结束,退出代码 0
  • 相关阅读:
    C++二叉树
    C++、、
    C++符号优先级
    django 时间格式(全局修改,不用过滤器)
    华硕ASUS U5800GE驱动
    pycharm 代码跟进以跳回/返回
    linux多jdk切换环境
    celery timeout的拦截
    chrome开启headless模式以及代理
    python 单引号与双引号的转义
  • 原文地址:https://www.cnblogs.com/Sup-to/p/11206742.html
Copyright © 2011-2022 走看看