我有两个算法A和B.两个算法采用相同的字符串作为输入,执行相同的转换字符串,并返回一个新的字符串。Python 3:我如何开始2个进程返回从哪个结束第一个答案,并提前停止其他进程
执行的转换有时会非常耗费CPU时间,而且算法对这个问题有不同的方法。这些算法根据输入的字符串表现出很大的不同,但我只关心答案,而不是哪种算法适用于转换。
我已经写了一些代码的伪问题的解释好一点:
def process_alg1(algorithm1, input_string)
ans_string = algorithm1(input_string)
q.put(ans_string)
def process_alg2(algorithm2, input_string)
ans_string = algorithm2(input_string)
q.put(ans_string)
def apply_transformation(input_string):
q = multiprocess.Queue()
process_alg1(input_string)
process_alg2(input_string)
final_answer = q.get()
stop(slowest_process)
我猜我需要使用的守护进程?我只是不确定我需要采取什么方法。我是否在进程和某种处理程序之间建立了一条管道,以便让较慢的进程停止?我可以简单地使用守护进程和队列来做到这一点吗?
我发现了很多用于同一算法的多个输入的例子,但没有多个算法使用相同输入的例子。
谢谢。
你需要的主要过程定期轮询子进程'exitcode'属性,以确定其是否已结束呢。那么你将不得不修改其他孩子(或两者)定期检查的某种共享变量,以便他们知道退出。发送sigkill并不好,并且没有直接的Windows平等。 – Aaron
@Aaron,如果我为两者使用守护进程,并且从我的程序的另一部分调用apply_transformation函数,那么进程会在apply_transformation调用之后或整个程序完成后终止? –
有没有这样的事情作为一个达蒙进程..只有线程 – Aaron