2016-04-24 60 views
3

我有一個方法,在我的蟒蛇,我希望通過下面的another SO question如何轉換到多線程子

這是怎樣的代碼,目前給出的建議使用多線程子上(2.7.6)的代碼:

return self.capi(roi_rgb,"",False) 

這是我如何將它轉換:

pool = multiprocessing.Pool(None) 
result = "" 
r = pool.map_async(self.capi(roi_rgb,"",False), callback=result) 
r.wait() 
return result 

,但我發現在調用上述錯誤pool.map_async

TypeError: map_async() takes at least 3 arguments (3 given) 
+0

請將具體的錯誤添加到您的文章。 – ChrisP

+0

@ChrisP'TypeError:map_async()至少需要3個參數(給出3個參數)' – Anthony

+0

您對'map_async'的調用看起來很奇怪; 'self.capi'返回一個函數? [文檔](https://docs.python.org/3.5/library/multiprocessing.html#multiprocessing.pool.Pool.map_async)表明第一個參數是一個函數,後面跟着一個可迭代的,那個'callback'應該是一個可接受單個參數的可調用函數。 – ChrisP

回答

0

根據https://docs.python.org/2/library/multiprocessing.html你需要給出至少2個位置參數,因爲你給它一個位置和一個關鍵字參數。 (第三個隱含的arg是self)

所以你需要傳遞一個函數和一個迭代器以及回調函數。

P.s.that是一個非常無用的錯誤消息是不是?