Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当两个并行运行的方法之一返回结果时,如何终止整个程序?_Python_Python Multiprocessing - Fatal编程技术网

Python 当两个并行运行的方法之一返回结果时,如何终止整个程序?

Python 当两个并行运行的方法之一返回结果时,如何终止整个程序?,python,python-multiprocessing,Python,Python Multiprocessing,下面是一个简单的例子。 我试图在只包含正整数的递增数组中找到一个最大元素。我想让两个算法并行运行find_max_1和find_max_2,然后当一个算法返回结果时,整个程序终止 def find_max_1(数组): #方法1,只返回最后一个元素 返回数组[len(数组)-1] def find_max_2(阵列): #方法2 解决方案=数组[0]; 对于数组中的n: 溶液=最大值(n) 返回溶液 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': #两个算

下面是一个简单的例子。 我试图在只包含正整数的递增数组中找到一个最大元素。我想让两个算法并行运行
find_max_1
find_max_2
,然后当一个算法返回结果时,整个程序终止

def find_max_1(数组):
#方法1,只返回最后一个元素
返回数组[len(数组)-1]
def find_max_2(阵列):
#方法2
解决方案=数组[0];
对于数组中的n:
溶液=最大值(n)
返回溶液
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
#两个算法并行运行,当其中一个返回结果时,整个程序停止
通过
我希望我清楚正确地解释了我的问题。我发现可以在
多处理
中使用
事件
终止
,所有进程在
事件时终止

def find_max_1(数组、事件):
#方法1,只返回最后一个元素
event.set()
返回数组[len(数组)-1]
def find_max_2(阵列、事件):
#方法2
解决方案=数组[0];
对于数组中的n:
溶液=最大值(n)
event.set()
返回溶液
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
#两个算法并行运行,当其中一个返回结果时,整个程序停止
事件=多处理。事件()
数组=[1,2,3,4,5,6,7,8,9…100000007]
p1=多处理。进程(目标=查找最大值,参数=(数组,事件,)
p2=多处理。进程(目标=查找最大值2,参数=(数组,事件,)
作业=[p1,p2]
p1.开始()
p2.start()
尽管如此:
如果event.is_set():
对于工作中的p:
p、 终止()
系统出口(1)
时间。睡眠(2)

但效率不高。如果有更快的实现来解决它?多谢各位

无论你在做什么,你都在制造僵尸进程。在python中,多处理库的工作方式有点混乱。如果要终止进程,请确保已加入该进程。在python多处理指南中,它清楚地指出

加入僵尸进程

在Unix上,当进程完成但尚未加入时,它将变成僵尸。不应该有太多,因为每次启动一个新进程(或调用active_children())时,所有尚未联接的已完成进程都将联接。同时调用已完成进程的process.is_alive将加入该进程。即使如此,显式地加入您启动的所有流程可能也是一种良好的做法


<强>请考虑在使用TealEnter()时使用Couse()关键字。我建议你在SE上的网站上问这个问题。堆栈溢出是为了解决代码问题,而不是优化它:)。您知道python有两个内置的名为

min
max
?非常感谢大家。上面提到的例子只是对实际问题的简化。