我有一个用python编写的回归测试脚本,该脚本调用了许多也用python编写的测试脚本并执行它们。每个测试脚本都返回passfail。我想确保回归测试脚本不会永远等待返回值,并会在一段时间后停止运行的测试脚本。我遇到了这个answer,它运行得很好。除了一个小的警告。 p.join()不会从测试脚本返回必不可少的值。我不能使用消息传递或全局变量,因为它是跨多个团队使用的巨大代码库。有人可以建议点什么吗?我查看了multiprocessing文档,但似乎找不到明确的答案。

该代码在Windows计算机上运行,​​而python版本是2.7x。

最佳答案

您可以改用Pool,它将直接返回worker函数的结果:

import multiprocessing

def f():
  return "hi"

if __name__ == "__main__":
    pool = multiprocessing.Pool(1) # Just a one-process Pool.
    result = pool.apply_async(f)
    try:
        print(result.get(10)) # Wait 10 seconds
    except multiprocessing.TimeoutError:
        print("Timed out")
        pool.terminate() # Kill all (1, in this case) processes in the pool
        pool.join()

关于python - 如何使用python多处理返回值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25533305/

10-16 17:15