首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何尽早终止python多进程池

如何尽早终止python多进程池
EN

Stack Overflow用户
提问于 2018-11-03 19:14:59
回答 1查看 1.5K关注 0票数 3

最近,我开始研究多处理模块,发现pool.map函数对于解析大型数组非常有用。但是,是否有办法提前终止池?假设我有一个巨大的列表,我想在一个列表中找到一个数字,检查它是否可用x,然后返回true如果是,并提前终止池的其余部分,我该怎么做呢?作为概念的证明,我试图从3到无穷(最不有效的方法)寻找素数。下面是一个例子:

代码语言:javascript
复制
import multiprocessing
from functools import partial

finders=multiprocessing.pool(multiprocessing.cpu_count()-1)

def is_devis(x, number):
    if number%x==0:
        return True

if __name__=="__main__":
    Primes=[3, 5, 7, 11, 13, 17, ...]
    x=3
    while True:
        x=x+2
        func=partial(is_devis, x)
        results=finders.map(func, Primes)
        if not (True in results):
            Primes.append(x)

我可能不完全理解多进程池或pool.map函数是如何工作的,但据我所知,它将为您平均地划分一个可迭代的部分,然后将它们分散到池中,并且工作人员将继续工作,直到所有进程返回或完成为止。是否有一种方法可以在一个进程返回一个值后立即终止一个池?我看过文献资料 on multiprocess.pool,但注意到了

池中的工作进程通常在池的工作队列的整个持续时间内运行。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-11-03 19:53:58

一种天真的方法是有一个全局标志,当一个线程找到一个答案时,它可以设置这个标志。在每个其他线程中,您可以定期检查标志,如果设置了该标志,则让线程终止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53134656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档