共计 640 个字符,预计需要花费 2 分钟才能阅读完成。
上一个Lock是控制资源的访问权限,谁拿到了锁才会去干活,信号量主要控制同时访问资源的进程的数量,比如生产饼干的任务一次只能两个人在车间里面干活,到点了这两个人撤了睡觉去了,在来两个人顶替,或者其中有个人临时有事也得找一个人来顶替干活。下面举个例子来说明
import multiprocessing
import time
def worker(s, i):
s.acquire()
print(multiprocessing.current_process().name + "acquire");
time.sleep(i)
print(multiprocessing.current_process().name + "release\n");
s.release()
if __name__ == "__main__":
s = multiprocessing.Semaphore(2)#信号量的参数设置为2,表示可以同时干活的有两个人
for i in range(5):
p = multiprocessing.Process(target = worker, args=(s, i*2))
p.start()
输出
Process-1acquire
Process-1release
Process-2acquire
Process-3acquire
Process-2release
Process-5acquire
Process-3release
Process-4acquire
Process-5release
Process-4release
正文完
请博主喝杯咖啡吧!