Ну, в настоящее время я использую multiprocessing.Pool.map()
для итеративного вызова исполняемой программы на Фортране через subprocess.call()
громоздким способом.Тем не менее, после нескольких часов работы исполняемого файла fortran много мертвых процессов, которые существенно влияют на общую эффективность вычислений.
Мне интересно, как избежать этой проблемы?
Мне жаль, чтоЯ не мог дать весь воспроизводимый экземпляр из-за огромного контекста.Но вот несколько снимков моего кода:
from multiprocessing import Pool
import subprocess
import numpy as np
def fortran_exe():
# call fortran exe through subprocess
subprocess.call()
p = Pool(36, maxtasksperchild=5000)
results = np.array(p.map(fortran_exe, range(250000), chunksize=500))
p.close()
p.join()