我正在研究涉及长概率子程序的项目。目标是找到一个数字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()
,这正是我想要避免的。
有没有人能解决这个(简单)问题?提前谢谢。
答案 0 :(得分:0)
创建multiprocessing.Queue
的实例并将其传递给子进程。当子进程找到结果时,它应该将它放入队列中。主进程应该从队列中读取结果,然后终止所有子进程。