我已經研究過這個問題多次,但還沒有找到一種解決方法,或者適用於我的情況,或者我理解的方法,請耐心等待。如何解決python多處理的酸洗錯誤而不在頂層?
基本上,我有一個層次結構的函數,這是阻止我在頂層進行多處理。不幸的是,我不相信我可以改變程序的佈局 - 因爲我需要在初始輸入之後創建的所有變量。
例如,說我有這樣的:
import multiprocessing
def calculate(x):
# here is where I would take this input x (and maybe a couple more inputs)
# and build a larger library of variables that I use further down the line
def domath(y):
return x * y
pool = multiprocessing.Pool(3)
final= pool.map(domath, range(3))
calculate(2)
我們得到以下錯誤:
Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
我想全局的,但恐怕我不得不定義太多,這可能會使我的程序減慢很多。 是否有任何解決方法,而不必重構整個程序?
您可能需要閱讀試圖解決[相當多的時候我選擇的答案相同的錯誤](http://stackoverflow.com/questions/6234586/we-need-to-pickle-any-sort-of-callable)。 – motoku 2015-03-03 00:36:13
Hey Sean,仔細看過你的問題後,恐怕我的解決方案可能會超出我的深度。無論如何,您可以給我一個關於這些函數在打包和解包時做什麼的更概念性概要? – Tim 2015-03-03 00:46:29
當然。讓我一起看一些示例代碼。 – motoku 2015-03-03 00:47:58