У меня есть код, который компрометирует создание входного файла и передачу его в исполняемый файл с использованием 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