Python中的多处理:仅保留返回的第一个结果

时间:2014-03-22 17:58:37

标签: python multiprocessing

我正在研究涉及长概率子程序的项目。目标是找到一个数字n。我正在尝试开发一种多处理方式。基本上,代码如下所示:

def f(x):
    if (random. random()<0.1):
        return True
    else:
        return False

def search():
    while True:
        candidate = random.randint()
        if(f(candidate)):
            return candidate
        else:
            continue


print(search())     

我想在多个进程中运行函数search()的几个实例(它们完全独立),然后

仅保留f()第一个终止执行的实例的结果

我看到的所有教程都强调创建一个进程p,然后让它等待其他计算完成使用p.join(),这正是我想要避免的。

有没有人能解决这个(简单)问题?提前谢谢。

1 个答案:

答案 0 :(得分:0)

创建multiprocessing.Queue的实例并将其传递给子进程。当子进程找到结果时,它应该将它放入队列中。主进程应该从队列中读取结果,然后终止所有子进程。