2016-10-31 84 views
0

我正在嘗試使用多處理技術來加速讀取大熊貓的excel。然而,當我使用多,我發現了錯誤 cPickle.PicklingError:不能鹹菜:屬性查找__builtin __功能失效使用pathos.multiprocessing時cPickle錯誤?

當我嘗試運行以下命令: 進口蘿 從pathos.multiprocessing進口ProcessPool

class A(object): 
    def __init__(self): 
     self.files = glob.glob(\*) 

    def read_file(self, filename): 
     return pd.read_excel(filename) 

    def file_data(self): 
     pool = ProcessPool(9) 
     file_list = [filename for filename in self.files] 
     df_list = pool.map(A().read_file, file_list) 
     combined_df = pd.concat(df_list, ignore_index=True) 

是不是pathos.multiprocessing旨在解決這個問題?我在這裏忽略了什麼嗎?

編輯: 完整的錯誤代碼跟蹤到

File "c:\users\zky3sse\appdata\local\continuum\anaconda2\lib\site-packages\pathos-0.2.0-py2.7.egg\ 
pathos\multiprocessing.py", line 136, in map 
return _pool.map(star(f), zip(*args)) # chunksize 
    File "C:\Users\ZKY3SSE\AppData\Local\Continuum\Anaconda2\lib\multiprocessing\pool.py", line 251, in map 
return self.map_async(func, iterable, chunksize).get() 
    File "C:\Users\ZKY3SSE\AppData\Local\Continuum\Anaconda2\lib\multiprocessing\pool.py", line 567, in get 
raise self._value 
+0

它看起來像你在Windows上,如果你沒有使用freeze_support,你可以得到這個神祕的錯誤。如果您可以發佈一些測試代碼來證明其他人可以輕鬆運行的錯誤,那麼您可能會得到一個更完整的答案來演示工作代碼。 –

回答

1

可能的是,熊貓可以是使用痛飲作爲C代碼的包裝。如果是這種情況,那麼蒔蘿可能無法正常工作,並且病態會切換到醃製。有解決方法,如下所示:How to make my SWIG extension module work with Pickle?

+0

有沒有辦法檢查熊貓是否在使用swig? – boson

+0

我嘗試了鏈接,但似乎沒有解決它 – boson