相关疑难解决方法(0)

如何在超时后中止multiprocessing.Pool中的任务?

我试图以这种方式使用python的多处理包:

featureClass = [[1000,k,1] for k in drange(start,end,step)] #list of arguments
for f in featureClass:
  pool .apply_async(worker, args=f,callback=collectMyResult)
pool.close()
pool.join
Run Code Online (Sandbox Code Playgroud)

从池的进程我想避免等待超过60秒的那些返回其结果.那可能吗?

python multiprocessing python-multiprocessing

14
推荐指数
2
解决办法
2万
查看次数

使用多处理时对池映射操作设置时间限制吗?

pool map()在Python中使用时是否可以设置操作的时间限制multiprocessing。当达到时间限制时,所有子进程都会停止并返回它们已有的结果。

import multiprocessing as mp

def task(v):
    do something
    return result

if __name__ == '__main__':
    vs = [...]
    p= mp.Pool()
    results = p.map(task, vs)
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我有一个非常大的列表vs。理想情况下,列表中的所有元素都vs将被发送到 function task(),并且所有结果都将保存在resultslist 中。

然而,由于列表vs非常大,而且我执行此过程的时间有限(比如 5 分钟)。我需要的是在达到 5 分钟时停止该map过程,并将计算结果返回到 list results

编辑1:

我不会终止需要超过 5 分钟才能完成的任务。假设我的列表中有 1000 个任务vs,5 分钟后只完成了 600 个任务。我需要的是杀死所有子进程,并将这 600 个任务的结果保存到列表中results

python multiprocessing

5
推荐指数
1
解决办法
4998
查看次数