线程池,锁,事件
Posted hunteryi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池,锁,事件相关的知识,希望对你有一定的参考价值。
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()
以上是关于线程池,锁,事件的主要内容,如果未能解决你的问题,请参考以下文章
13 join 线程锁之LockRlock信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queue队列 开发一个线程池
newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段