Zag*_*ags 5 python multiprocessing
我正在使用python的多处理库来创建多个进程.
from multiprocessing import Process
processes = [Process(target=function) for function in FUNCTIONS]
for p in processes:
p.start()
Run Code Online (Sandbox Code Playgroud)
我希望它们运行一段时间,然后如果它们还没有完成,则终止它们.
DURATION = 3600
Run Code Online (Sandbox Code Playgroud)
这样做的一个坏方法如下(糟糕,因为如果进程比DURATION完成得快,它仍然等待所有DURATION):
from time import sleep
sleep(duration)
for p in processes:
p.join(0)
p.terminate()
Run Code Online (Sandbox Code Playgroud)
另一个坏方法(不好因为它可能需要N*DURATION完成,其中N是进程数):
for p in processes:
p.join(DURATION)
p.terminate()
Run Code Online (Sandbox Code Playgroud)
有什么好办法呢?
我相信这可以满足您的需求,无需任何轮询,并且只会等待您指定的持续时间。
time_waited = 0
then = time.time()
for p in processes:
if time_waited >= DURATION:
p.join(0)
p.terminate()
p.join(DURATION - time_waited)
time_waited = time.time() - then
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
485 次 |
| 最近记录: |