在不进行进程间通信的情况下尽早结束python多处理“线程”

时间:2019-02-13 19:14:04

标签: python multiprocessing python-multiprocessing

我正在用Python编写程序,以找到一些满足一组特定约束的多项式。我想使用Python的multiprocessing模块将问题分解为多个线程,但我不希望程序在等待所有线程完成时的运行时间超过其所需的时间。

基本上,我的程序正在搜索“足够好”的多项式或“完美”多项式。在当前的非线程状态下,如果找到“足够好”的多项式,它会记录继续运行,但是如果找到“完美”的多项式,它将停止。

我想设计线程方法,以便如果一个线程找到一个“完美的”多项式并返回,则其他所有线程将立即终止。我在网上阅读的每个资源都建议分配某种共享内存变量,例如found_perfect_polynomial,每个线程都会定期检查该变量,以查看是否应该终止。

我的问题是,对于希望尽快运行的程序,共享内存方法似乎效率极低,因为它为线程在等待访问共享内存时阻塞提供了很大的潜力。

我的梦想是,如果有人用“完美的”多项式返回,我的main()例程可以终止所有其他线程。我知道从模块到结束仍在运行的线程的terminate()方法,但是我不确定在终止时如何检查每个线程,我只熟悉类似的东西

for i in xrange(0, 5):
    threads[i].join()

等待第一个,然后第二个,然后第三个,依此类推。

欢迎任何建议!谢谢!

0 个答案:

没有答案