【问题标题】:how to run several executable using python?如何使用python运行几个可执行文件?
【发布时间】:2012-03-15 16:57:43
【问题描述】:

我在 linux 下有一个可执行文件。我有一个 8 核处理器。我想用不同的参数运行同一个可执行文件的 8 个不同实例。

我试过了

     os.system("process_name args")

在进程完成之前它不会返回。

我想从 python 启动 8 个不同的进程

如果有人可以帮助我。

非常感谢

【问题讨论】:

  • 这些进程是否保证是 Python 程序,或者您是否希望启动任何类型的通用程序?
  • 我在找一般的
  • 它们可能是但不一定是 python 进程

标签: python multiprocessing


【解决方案1】:

我认为您正在寻找来自 subprocess 模块的 Popen 对象。

请注意,如果您想将 I/O 重定向到进程或从进程重定向,这种情况会变得复杂,因为推荐的方法是调用.communicate(),如果您想管理您将无法使用它多个进程同时进行。在类 UNIX 系统上,管道可以传递给 select() 系统调用,因此您可以使用 select 模块执行 I/O。这在 Windows 上不起作用,因为 select() 实现只接受套接字句柄。

【讨论】:

  • 非常感谢您的回答。我不希望进程相互通信。但应该单独运行。在这种情况下,Popen 是正确的选择?
  • communicate() 不适用于相互通信的进程。如果通过管道重定向 I/O,则只有父进程(您的 Python 程序)与其子进程“通信”。如果您不重定向子进程的 I/O 或将其重定向到文件,那么您将不会遇到“通信问题”,只需 .poll().returncode 即可查看进程是否完成。
  • Popen 是几乎所有涉及使用 Python 的子进程的解决方案的正确解决方案。
  • 酷,谢谢,输出被重定向到文件......一个问题......是否有任何机制知道某个子进程何时完成。谢谢
  • @JonasWielicki 更好:Popen.poll()Popen.wait(),它们设置了 returncode
猜你喜欢
  • 2021-05-12
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 2018-12-31
  • 2015-07-16
相关资源
最近更新 更多