Python 并行解搜索
我已经使用多处理包用python编写了一些代码。它可以用6种不同的方法来搜索方程的解,所以我有6个不同的进程,用不同的参数运行同一个函数。我希望在其中一个子进程找到解决方案后停止所有子进程。现在使用连接函数后,结果是,即使找到了解决方案,其他进程也会继续,直到找到解决方案为止。我正在使用join()Python 并行解搜索,python,python-multiprocessing,Python,Python Multiprocessing,我已经使用多处理包用python编写了一些代码。它可以用6种不同的方法来搜索方程的解,所以我有6个不同的进程,用不同的参数运行同一个函数。我希望在其中一个子进程找到解决方案后停止所有子进程。现在使用连接函数后,结果是,即使找到了解决方案,其他进程也会继续,直到找到解决方案为止。我正在使用join() 这就是我调用函数求解的方法。通常N是6-10。您需要一个列表,其中包含对所有线程的引用,并且所有线程都可以访问该列表。此线程列表应在启动线程之前准备就绪。首先找到解决方案的线程可以使用该列表杀死其他
这就是我调用函数求解的方法。通常N是6-10。您需要一个列表,其中包含对所有线程的引用,并且所有线程都可以访问该列表。此线程列表应在启动线程之前准备就绪。首先找到解决方案的线程可以使用该列表杀死其他线程,从而避免自杀 如果在调用join之前其中一个线程死亡,您可能会面临竞速情况。因此,您可能在一个已经死了的线程上调用join。一个快速而肮脏的解决方法是让每个线程在主线程调用所有线程的join之前等待几毫秒
另一种更干净的解决方案是使用一个标记,当所有线程寻找解决方案时,该标记都会被检查。如果他们发现这是真的,他们应该立即终止返回。找到解决方案的线程可以将标志设置为true并返回。现在所有线程都将很好地连接主线程。
process.join()
将等待进程完成,process.terminate()
可能对您更有用。我仍然希望调用函数等待其中一个进程完成。有没有一种方法可以只用process.terminate()来实现这一点?请给出一个最简单的代码示例作为起点。应该有一种方法等待其中一个函数的结果,然后杀死其他函数。
for i in range(N):
p=multiprocessing.Process(target=mysolver,args=(g,h,q,B[i],i,dic,))
jobs.append(p)
p.start()
for p in jobs:
p.join()