• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

python多进程信号量(Semaphore)

Python admin 4周前 (04-22) 83次浏览 0个评论 扫描二维码

上一个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

Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明python 多进程信号量(Semaphore)
喜欢 (0)
admin
关于作者:

您必须 登录 才能发表评论!