【问题标题】:Python subprocess Popen in async mannerPython子进程以异步方式Popen
【发布时间】:2021-01-27 00:38:33
【问题描述】:

假设您希望以异步方式在循环中启动多个并行进程,当然,为每个进程获取其退出代码并打印。

如果我们做一些天真的事情:

i = 5
While i > 0:
    p = sp.Popen(["./my_module.py", "arg1", "arg2"], stdout=sp.PIPE, stderr=sp.PIPE)
    out, err = p.communicate()
    result = p.returncode
    i -= 1

由于上面的 communicate 阻塞方法,这可能无法异步工作。
对于实现多进程分配异步方式并最终将结果累积在列表或其他东西中的最佳简单方法有什么想法吗?

【问题讨论】:

  • 这能回答你的问题吗? Non blocking subprocess.call
  • @ThiagoBarcala:我还没有看到任何具体的解决方案来累积多个进程运行的结果,此外我更喜欢避免异步

标签: python python-3.x multiprocessing subprocess


【解决方案1】:

试试this 项目。它是一个异步多处理实现。

更新: 此外,来自 stdlib 的 subprocess 模块现在支持 asyncio,请查看文档:https://docs.python.org/3/library/asyncio-subprocess.html

【讨论】:

    猜你喜欢
    • 2017-02-03
    • 1970-01-01
    • 2017-11-22
    • 2018-12-05
    • 2014-09-15
    • 1970-01-01
    • 2012-03-03
    • 2011-08-05
    • 2017-08-22
    相关资源
    最近更新 更多