标签:while check event show sleep one 服务 次数 ==
版本一:
from threading import Event,current_thread,Thread import time event=Event() #造一个对象,内部维护一个全局变量,状态为False def check(): print(‘%s 正在检测服务是否正常....‘ %current_thread().name) time.sleep(3) #模拟检测过程 event.set() #把全局变量由False改为True def connect(): print(‘%s 等待连接...‘ %current_thread().name) event.wait() #循环等待全局变量是否变了,直到event.set()执行了全局变量才会变 print(‘%s 开始连接...‘ % current_thread().name) #模拟链接请求 if __name__ == ‘__main__‘: t1=Thread(target=connect) t2=Thread(target=connect) t3=Thread(target=connect) c1=Thread(target=check) t1.start() t2.start() t3.start() c1.start()
打印结果
Thread-1 等待连接...
Thread-2 等待连接...
Thread-3 等待连接...
Thread-4 正在检测服务是否正常....
Thread-1 开始连接...Thread-2 开始连接...Thread-3 开始连接...
版本二:
对尝试链接次数进行约束限制,如果链接次数大于3,结束链接操作
from threading import Event,current_thread,Thread import time event=Event() def check(): print(‘%s 正在检测服务是否正常....‘ %current_thread().name) time.sleep(5) event.set() def connect(): count=1 while not event.is_set(): #判断全局变量是否被设置过 if count == 4: print(‘尝试的次数过多,请稍后重试‘) return print(‘%s 尝试第%s次连接...‘ %(current_thread().name,count)) event.wait(1) count+=1 print(‘%s 开始连接...‘ % current_thread().name) if __name__ == ‘__main__‘: t1=Thread(target=connect) t2=Thread(target=connect) t3=Thread(target=connect) c1=Thread(target=check) t1.start() t2.start() t3.start() c1.start()
打印结果:
Thread-1 尝试第1次连接... Thread-2 尝试第1次连接... Thread-3 尝试第1次连接... Thread-4 正在检测服务是否正常.... Thread-1 尝试第2次连接... Thread-2 尝试第2次连接... Thread-3 尝试第2次连接... Thread-2 尝试第3次连接... Thread-1 尝试第3次连接... Thread-3 尝试第3次连接... 尝试的次数过多,请稍后重试尝试的次数过多,请稍后重试尝试的次数过多,请稍后重试
标签:while check event show sleep one 服务 次数 ==
原文地址:https://www.cnblogs.com/zh-xiaoyuan/p/11774298.html