在非关键部分执行lock.acquire阻止进程

时间:2018-08-21 16:51:47

标签: python multiprocessing python-multiprocessing

也许我没有很好地阅读过文档,但是我没有找到有关lock或rlock的aquire工作方式的更多信息...不管这些进程在执行什么语句(即使它们是而不是关键部分)。还是仅阻止尝试访问关键部分的进程

谢谢!

1 个答案:

答案 0 :(得分:2)

从文档中

  

multiprocessing.Lock

     

一个非递归锁对象:threading.Lock的近似模拟。一旦进程或线程获取了锁,则随后从任何进程或线程获取锁的尝试都将阻塞,直到释放为止;否则,该锁将被释放。任何进程或线程都可能释放它。除非另有说明,否则在适用于线程的线程和锁的概念和行为将在多处理中复制。

因此,当您调用acquire()(注意使用block参数的默认值)时,您的过程将:

  1. 获取锁是否处于解锁状态。
  2. 进行锁定,直到锁处于解锁状态,然后再获取它。

此机制允许您在逻辑中定义“关键部分”,这意味着一次仅一个进程将执行该特定功能(即播放音频文件)

相关问题