事件和信号量
from threading import Thread,Semaphore import time def func(sem,a,b): sem.acquire() time.sleep(0.5) print(a+b) sem.release() sem = Semaphore(4) t_lst = [] for i in range(10): t = Thread(target=func,args=(sem,i,i+5)) t.start() t_lst.append(t) for t in t_lst: t.join() print('主线程')
import time,random from threading import Thread,Event def connect_db(e): count = 0 while count < 3: e.wait(0.5) if e.is_set() == True: print('连接至数据库') break else: count += 1 print('第%d次连接失败'%count) else: raise TimeoutError('连接超时') def check_web(e): time.sleep(random.randint(0,3)) e.set() e = Event() t1 = Thread(target=connect_db,args=(e,)) t2 = Thread(target=check_web,args=(e,)) t1.start() t2.start()