我已经完成了(这个SO线程)[Synchronization issue using Python's multiprocessing module但它没有提供答案。
以下代码: -
rom multiprocessing import Process, Lock
def f(l, i):
l.acquire()
print 'hello world', i
l.release()
# do something else
if __name__ == '__main__':
lock = Lock()
for num in range(10):
Process(target=f, args=(lock, num)).start()
如何让流程按顺序执行。?我想要锁定几秒钟,然后将其释放,从而将P1和P2向前移动到锁定位置,然后P2向前移动,P3将锁定除外。我如何按顺序执行流程。?
答案 0 :(得分:0)
听起来你只想延迟每个连续过程的开始。如果是这种情况,您可以使用multiprocessing.Event
来延迟启动主进程中的下一个子进程。只需将事件传递给孩子,并让孩子set
完成Event
完成在开始下一个孩子之前应该运行的任何事情。主要流程wait
可Event
,一旦发出信号,clear
就可以启动下一个孩子。
from multiprocessing import Process, Event
def f(e, i):
print 'hello world', i
e.set()
# do something else
if __name__ == '__main__':
event = Event()
for num in range(10):
p = Process(target=f, args=(event, num))
p.start()
event.wait()
event.clear()
答案 1 :(得分:-1)
from multiprocessing import Process
def f(i):
# do something here
if __name__ == '__main__':
for num in range(10):
print 'hello world', num
Process(target=f, args=(num,)).start()
在这种情况下,它将按顺序打印,然后将异步执行剩余部分