码迷,mamicode.com
首页 > 编程语言 > 详细

线程_事件

时间:2020-03-29 10:43:21      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:import   set   star   target   strong   random   from   main   break   

线程的一个关键特性是每个线程都是独立运行且状态不可预测。

如果程序中的其他线程需要通过判断某个线程的状态来确定自己下一步的操作,这时我们需要使用threading库中的Event对象。

event.set():设置事件状态为True

event.wait ():等待event.set 把事件状态设置为True

event.is_set():检查事件状态是否为True

#事件
from threading import Thread,current_thread,Event
import threading
import time,random

def conn_mysql():
    count=1
    while not event.is_set():   
        if count>2:
           break
        print("%s 第%s次 尝试链接" %(current_thread().getName(),count))
        event.wait(0.1)  
        count+=1
    print("%s 第%s次 链接成功" %(current_thread().getName(),count))

def check_mysql():
    print("%s 正在检查mysql"%current_thread().getName())
    time.sleep(random.randint(1,2))
    event.set()        
if __name__=="__main__":
    event=Event()
    conn1=Thread(target=conn_mysql)
    conn2=Thread(target=conn_mysql)
    check=Thread(target=check_mysql)
    conn1.start()
    conn2.start()
    check.start()
‘‘‘
Thread-862 第1次 尝试链接
Thread-861 第1次 尝试链接
Thread-863 正在检查mysql

Thread-861 第2次 尝试链接
Thread-862 第2次 尝试链接

Thread-862 第3次 链接成功
Thread-861 第3次 链接成功
‘‘‘

 

线程_事件

标签:import   set   star   target   strong   random   from   main   break   

原文地址:https://www.cnblogs.com/hapyygril/p/12590838.html

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