我有一个用python编写的回归测试脚本,它调用了许多也用python编写的测试脚本并执行它们。每个测试脚本都会返回pass
或fail
。我想确保回归测试脚本不会永远等待返回值,并在某段时间后停止运行的测试脚本。我遇到了这个answer并且效果非常好。除了一个小警告。 p.join()
不会从测试脚本返回一个必不可少的值。我不能使用消息传递或全局变量,因为它是跨多个团队使用的巨大代码库。有人可以建议吗?我查看了multiprocessing
文档,但似乎无法找到明确的答案。
代码在Windows机器上运行,python版本为2.7x。
答案 0 :(得分:1)
您可以改为使用Pool
,将直接返回工作函数的结果:
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()