我正在尝试使用该multiprocessing
模块在池中并行化一个函数,但我遇到了错误:
守护进程不允许有子进程
更具体地说,我正在使用使用模块进行并行emcee
化的multiprocessing
模块,并且我想并行化我的后验函数以加快计算速度。在这种情况下,有没有办法在 main 中并行化一个函数Pool
?
编辑(添加代码):
# defines the log-posterior probability distribution
def logp(p):
mu_imf, mu_h0, sigma_h, b_h = p
logpost = np.zeros(ngal, dtype='longdouble')
for i in range(ngal):
logpost[i] = np.log(quad(lambda m_halo: Integrand(m_halo, i, mu_imf, mu_h0, sigma_h, b_h), 11.9, 15.0107)[0])
return np.sum(logpost)
with Pool() as pool:
sampler = emcee.EnsembleSampler(nwalkers, npars, logp, pool=pool)