如何阻止方法停滞?

时间:2019-05-24 02:43:47

标签: python

因此,当此方法尝试解决一个非常大的问题(例如9999 ^ 99999 ^ 99999)时,它只会停顿下来并停止其他所有程序的运行,我怎么拥有它,所以它会在10秒后结束?

def solve_equ(variable, equ):
    ans = []
    if variable is None:
        return [f"`{N(equ)}`"]
    else:
        partial_ans = solve(equ, variable, dict=True)
    for i in partial_ans:
        ans.append(f"{variable} = `{N(list(i.values())[0])}`\n")
    return ans

solve()方法陷入困境

1 个答案:

答案 0 :(得分:0)

使用multiprocessing

def solve_equ(variable, equ):
    ans = []
    if variable is None:
        return [f"`{N(equ)}`"]
    else:
        partial_ans = solve(equ, variable, dict=True)
    for i in partial_ans:
        ans.append(f"{variable} = `{N(list(i.values())[0])}`\n")
    return ans

proc = multiprocessing.Process(target=solve_equ, name="Solve", args=(x))
proc.start()
time.sleep(10)
proc.terminate()

proc.join()  # cleanup

name对代码没有影响,仅用于标识。