слишком много мертвых процессов влияют на эффективность вычислений в многопроцессорной среде Python - PullRequest
0 голосов
/ 16 апреля 2019

Ну, в настоящее время я использую 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()
...