Отправка большого файла с использованием подпроцесса check_all параллельно - PullRequest
0 голосов
/ 20 октября 2018

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