我有一个代码,其中包含使用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