1。线程池
import threading,time
def run(n):
s.acquire()#锁线程
print("thread--%s starting"%n)
time.sleep(1)
print('thread---%s done...'%n)
s.release()#释放线程
#list=[]
s=threading.BoundedSemaphore(5)#信号量。相当于线程池,一次性只能启动5个线程
for i in range(50):
t=threading.Thread(target=run,args=(i,))
t.start()
# list.append(t)
#for t in list:
# t.join()
print("完了")
事件:红绿灯实例
import threading,time
event=threading.Event()
event.set()
def lighter():
count=0
while True:
if count>5 and count<10:
event.clear()#清除标志位
print("lighter is reding....")
elif count>10:
event.set()#设置标志位
print("lighter is green....")
count=0
else:
print("lighter is green..")
count+=1
time.sleep(1)
def car(name):
while True:
if event.is_set():#判断标志位是否设置。
print("[%s] is running"%name)
else:
print("[%s] is stop"%name)
event.wait()#等待标志位的变化,如果状态变了,就可以通行了。
print("lighte is green going")
time.sleep(1)
l=threading.Thread(target=lighter)
l.start()
c=threading.Thread(target=car,args=('aodi',))
c.start()