我的目标很简单:
N秒后终止池中的所有进程。
p = Pool(5)
def f(x):
return x*x
p.map(f, [1,2,3]) 我需要使用池,而不是multiprocessing.Process
有没有办法终止整个池或其中的所有进程?
线程池也是一种选择。
发布于 2018-05-01 22:42:56
您不能对线程执行此操作(无法强制线程从外部退出)。您可以对进程池执行terminate()操作。
类似这样的代码,但您需要使用map_async。如果你使用阻塞映射,那么你可能就不走运了。
from multiprocessing import Pool
from time import sleep
def worker(x):
print(x)
sleep(50)
tasks = [x for x in range(0,10)]
p = Pool()
q = p.map_async(worker, tasks)
q.wait(10)
try:
p.terminate()
p.join()
except:
pass
print("done")这会将任务提交到池中,如果池尚未完成,则在10秒后终止该池。这可能适合也可能不适合您的目的。
https://stackoverflow.com/questions/50118036
复制相似问题