5.1.18 信號量
阿新 • • 發佈:2018-06-17
HR 。。 time 代碼 tar 有一個 col pan class
互斥鎖和排斥鎖 同一時間只能有一個線程處理同一段代碼。比如,只有一個坑的衛生間
信號量:同時最多可以有N個線程同時處理同一段代碼。 比如有3個坑的衛生間,最多可以有三個人同時使用。
from threading import Semaphore from threading import Thread import time def task(name): sm.acquire() print(‘%s 正在占坑。。。‘ % name) time.sleep(2) sm.release() if __name__ == ‘__main__‘: sm= Semaphore(3) # 有三個坑的鎖 , 排斥鎖和遞歸鎖只有一個坑的鎖 # t_1 = [] for i in range(10): t = Thread(target=task, args=(‘線程‘+str(i),)) # t_1.append(t1) t.start()
運行結果:
線程0 正在占坑。。。 線程1 正在占坑。。。 線程2 正在占坑。。。 線程3 正在占坑。。。 線程5 正在占坑。。。 線程4 正在占坑。。。 線程7 正在占坑。。。 線程8 正在占坑。。。 線程6 正在占坑。。。 線程9 正在占坑。。。 Process finished with exit code 0View Code
5.1.18 信號量