使用子流程check_all并行提交大文件

时间:2018-10-20 11:05:04

标签: python arrays parallel-processing subprocess

我有一个代码,其中包含使用subprocess.check_all将输入文件提交并提交给可执行文件的折衷方案。不幸的是,这个过程太慢了。输入文件的大小通常往往大于数百兆。

我想知道以二进制形式写入输入文件并并行运行子进程是否有用。

input_xyz = open(initial + "_xyz.inp", "w")
input_xyz.write("{0:d}\n".format(length**3))
for ix in np.linspace(xmin, xmax, length, True):
    for iy in np.linspace(ymin, ymax, length, True):
        for iz in np.linspace(zmin, zmax, length, True):
            input_xyz.write("{0:12.6f} {1:12.6f} {2:12.6f}\n".format(ix, iy, iz))
input_xyz.close()

subprocess.check_call(["elec_pot_calc", initial + ".tvb", initial + ".csx",
        initial + "_xyz.inp", initial + "_xyz.out"])

输入是一组带有标题的xyzzy文件,标题是输入的数量

1000
  -10.403406   -12.484424   -16.060428

并且输出将与在可执行文件中计算出的加数相同

1000
    -10.4034060000000004     -12.4844240000000006     -16.0604280000000017       0.0008508183029086

0 个答案:

没有答案