gpt4 book ai didi

python - 修复多处理进程超时时间

转载 作者:行者123 更新时间:2023-12-01 09:26:21 25 4
gpt4 key购买 nike

我试图使用多处理模块设置并行作业的代码。我想在 10 秒内终止所有子作业。我在进程连接函数中使用超时参数编写了以下代码。但是,我发现所有作业的终止时间都取决于超时值和作业数量。如何计算准确的时间?

import time
from multiprocessing import Manager, Process

def f(x, dic):
time.sleep(60)
print "Time: ", x
dic[x] = "Done"

mng = Manager()
dic = mng.dict()
jobs = [Process(target=f, args=(i, dic)) for i in range(50)]

for job in jobs:
job.start()

for job in jobs:
job.join(timeout=10)

for job in jobs:
job.terminate()

for job in jobs:
job.join()

print dic.keys()

最佳答案

您可以先计算十秒超时,然后在单个循环中等待并终止作业。仅当超时尚未到来时才等待。

end_at = time.time() + 10
while jobs:
job = jobs.pop()
delta = end_at - time.time()
if delta > 0:
job.join(timeout=delta)
job.terminate()
job.join()

关于python - 修复多处理进程超时时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50359667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com