这个问题源于我对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脚本就可以恢复做的事情。&#39 ;
我不知道从哪里开始,所以如果有人有任何提示或者可以告诉我格式化子进程命令的正确方法,我将非常感激。所有使用子流程的个人尝试都会导致史诗般的失败。
感谢!!!
答案 0 :(得分:2)
非常简单。
from subprocess import call
call(["path/to/openmpi/mpirun", "-machinefile machine.file -np 256 /path/to/excecutable </dev/null &> output.out &"])
通常,您将命令的参数作为列表提供,但我认为这也应该可以正常工作。如果没有,将每个参数分解为列表的新元素。
This回答了更多关于此方法的局限性。