好吧,我目前正在使用multiprocessing.Pool.map()
以大容量方式通过subprocess.call()
迭代地调用fortran可执行程序。但是,运行几个小时后,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()