具有复杂命令的 Python 子进程

标签 python python-2.7 subprocess mpi os.system

这个问题源于我对 UNIX 命令结构和 SUBPROCESS 模块缺乏了解,所以请提前原谅我的天真。

我有一个命令,看起来像这样

path/to/openmpi/mpirun -machinefile machine.file -np 256 /path/to/excecutable </dev/null &> output.out &

我知道 MPIrun 的结构如何工作,并且我认为我的可执行文件将其数据写入 stdout,然后将其重定向到名为 output.out 的文件。我已经在使用 os.sys() 的 python 脚本中使用了此命令,但我想使用子进程,以便当可执行文件完成运行(在后台)时,python 脚本可以恢复执行“操作”。

我不知道从哪里开始,所以如果有人有任何提示或可以向我展示格式化子进程命令的正确方法,我将非常感激。所有使用子流程的个人尝试都会导致巨大的失败。

谢谢!!!

最佳答案

这非常简单。

from subprocess import call
call(["path/to/openmpi/mpirun", "-machinefile machine.file -np 256 /path/to/excecutable </dev/null &> output.out &"])

通常,您会以列表的形式向命令提供参数,但我认为这应该同样有效。如果不是,请将每个参数分解为列表的一个新元素。

This答案更多地探讨了这种方法的局限性。

关于具有复杂命令的 Python 子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34905954/

相关文章:

python - 读取流并传递给子进程

python - matplotlib 带有绘图和 Slider 对象的紧凑布局

Python:解析各种不同的文本文件电子邮件

python - 递归比迭代更糟糕吗?

python - 即时生成的压缩文件

Python:绝对路径问题

python - 从 errbot 将数据返回到 Slack

python 过滤并列出并将 "filtered indices"应用于另一个列表

python - 单击按钮时更改 OptionMenu 的选项

python - 在 Python 中复制 zipfile 的内容