if __name__ == '__main__': # 公共厕所只有3个坑 sm=Semaphore(3)
# 23个人冲进厕所 for i in range(23): t=Thread(target=func) t.start()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
from threading import Thread,Semaphore,currentThread import time,random
# 公共厕所只有三个坑 sm=Semaphore(3)
def task(): with sm: print('%s get 厕所' %currentThread().getName()) time.sleep(random.randint(1,3)) print('%s out 厕所----------\n' % currentThread().getName())
if __name__ == '__main__': for i in range(10): t=Thread(target=task) t.start()
from threading import Thread,Event,currentThread import time
event=Event()
def conn(): n=0 while not event.is_set(): if n == 3: print('%s try too many times' %currentThread().getName()) return print('%s try %s' %(currentThread().getName(),n)) event.wait(0.5) n+=1
print('%s is connected' %currentThread().getName())
def check(): print('%s is checking' %currentThread().getName()) time.sleep(5) event.set()
if __name__ == '__main__': for i in range(3): t=Thread(target=conn) t.start() t=Thread(target=check) t.start()