我想在 python 中使用多个 cpu 对一个函数进行数值集成。我想做类似的事情:
from scipy.integrate import quad
import multiprocessing
def FanDDW(arguments):
wtq,eigq_files,DDB_files,EIGR2D_files,FAN_files = arguments
...
return tot_corr
# Numerical integration
def integration(frequency):
# Parallelize the work over cpus
pool = multiprocessing.Pool(processes=nb_cpus)
total = pool.map(FanDDW, zip(wtq,eigq_files,DDB_files,EIGR2D_files,FAN_files))
FanDDW_corr = sum(total)
return quad(FanDDW, -Inf, Inf, args=(zip(wtq,eigq_files,DDB_files,EIGR2D_files,FAN_files)))[0]
vec_functionint = vectorize(integration)
vec_functionint(3,arange(1.0,4.0,0.5))
“频率”也是一个全局变量(FanDDW(参数)外部)。它是一个向量,包含必须评估函数的位置。我想quad应该以一种聪明的方式选择频率。如何将它传递给 FanDDW,知道它不应该分布在 CPU 之间,而 pool.map 正是这样做的(这就是我将它作为全局变量而不将其作为参数传递给定义的原因)。
感谢您的任何帮助。
塞缪尔。