我在Windows桌面上以多線程模式運行python Emcee MCMC代碼時遇到問題。它使用一個線程運行正常,並且在我的Mac OSX筆記本電腦上以單線程或多線程模式運行。以下是簡單的示例代碼(摘自Emcee網站示例)。Emcee不會在Windows中運行多線程
import numpy as np
import emcee
def lnprob(x, ivar):
return -0.5 * np.sum(ivar * x ** 2)
ndim, nwalkers = 10, 100
ivar = 1./np.random.rand(ndim)
p0 = [np.random.rand(ndim) for i in range(nwalkers)]
sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=[ivar], threads=2)
%time sampler.run_mcmc(p0, 10000)
如果我設置threads = 1,它在兩臺機器上都運行正常,大約需要5秒鐘的時間運行。如果我設置threads = 2,它在Mac上運行良好,但掛在Windows機器上。筆記本中沒有記錄錯誤,但在命令提示符窗口中,我看到了混亂的錯誤消息,好像兩個進程試圖同時寫入錯誤消息一樣。我似乎無法複製,並將它們從窗口粘貼,但他們最終用:
"Attribute Error: 'module' object has no attribute 'lnprob'
在兩臺機器上,我在Jupyter筆記本上運行此。我檢查了我有emcee,conda和anaconda的更新版本。任何想法,爲什麼我有麻煩?
這並不能真正幫助,雖然我很欣賞的響應。我的問題是Windows,而不是OSX。代碼在OSX中運行良好。 – kevinea