0

当我通过终端传递我的 mpirun 命令时,正常(和预期的)结果是一个包含一堆数据的输出文件。

但是,当我通过我的 python 脚本传递代码时,会创建所有预期的输出文件,但是它们不包含任何数据。对此有什么全球性的解释吗?我已经使用 os.system 和 subprocess 尝试了许多不同的代码方式。我也尝试过在后台运行代码以及运行。而且我还尝试让程序吐出数据与将其保存到输出文件,并且都给出相同的结果。

这是代码:

os.system("mpirun -np 4 /home/mike/bin/Linux-ifort_XE_openmpi-1.6_emt64/v2_0_1/Pcrystal > mgo.out")
4

2 回答 2

0

获得该行为的最简单方法是如果 mpirun 没有成功运行。

例如,如果我从命令行运行

not_actually_a_command > myFile.txt

myFile.txt 将被创建,但将为空(“找不到命令”消息打印到 stderr,因此不会被“>”捕获)。

尝试使用完全解析的 mpirun 路径

您的方法似乎没有本质上的错误。当我做

os.system("echo hello, world >hello.txt")

它以“你好,世界”结束,所以如果你让你的命令运行它应该适合你。

于 2013-07-18T19:29:53.887 回答
0

您应该从提供完整路径开始

os.system("/complete/path/to/mpirun

并打印结果,print(os.system...etc.),并发布错误,以便我们知道出了什么问题。使用 subprocess 模块时,可能需要“shell=True”

于 2013-07-18T20:22:26.897 回答