python - 如何使用 python 多处理返回一个值?

标签 python testing multiprocessing

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

代码在 Windows 机器上运行,python 版本为 2.7x。

最佳答案

您可以改用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()

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

相关文章:

Python 错误只有长度为 1 的数组可以转换为 Python 标量

oracle - 如何验证空值 - oracle etl 测试?

javascript - 无法按模型选择元素

python - 多处理池 - 如果返回所需结果,如何取消所有正在运行的进程?

Python多处理池 'raise ValueError("池未运行“)ValueError : Pool not running' function with return value

python - 如何使用 SQLAlchemy 连接到 Amazon Redshift 中的集群?

python - 将 OAuth 与 Google App Engine 结合使用的用户信息

python - 从 Python 中的字符串中删除所有十六进制字符

testing - BDD 和 UI 测试

多线程或多进程中的python socket.connect超时错误