通過下麵一個例子進行理解。 運行結果: 分析: p = multiprocessing.Process(……)定義了五個進程,p.start五個進程並行,造成如圖的結果是信號量限制進程對臨界資源的訪問的原因。 s = multiprocessing.Semaphore(2)定義了信號量最大為2,re ...
通過下麵一個例子進行理解。
from multiprocessing import Process from multiprocessing import Semaphore import datetime import time import multiprocessing def worker(s, i): s.acquire() print(multiprocessing.current_process().name + " acquire",datetime.datetime.now()) time.sleep(i) print(multiprocessing.current_process().name + " release",datetime.datetime.now(),"\n") s.release() if __name__ == "__main__": s = multiprocessing.Semaphore(2) for i in range(5): p = multiprocessing.Process(target = worker, args=(s, i*2)) p.start()
運行結果:
