在方法上使用multiprocessing
時,出現錯誤,說明self.methods cannot be pickled
。使用self.methods進行多處理
爲了克服這個問題我用:
def _pickle_method(m):
if m.im_self is None:
return getattr, (m.im_class, m.im_func.func_name)
else:
return getattr, (m.im_self, m.im_func.func_name)
copy_reg.pickle(types.MethodType, _pickle_method)
現在我搜索了這一點,但幾個問題仍不清楚:
- 爲什麼不能
self.methods
醃製? copy_reg.pickle()
如何工作?它如何使酸洗self.methods
?- 使用此方法是否有任何不利之處,或者是否有其他更好的方法?
更多信息:
我有一個類中的功能,用來做request.get
和request.post
。爲了改善時間,我使用了多處理。 這是我遇到的確切問題。
沒有更多的信息,這是很難理解_why_' pickle'會嘗試序列化一個實際的類方法(這不是'pickl' e'做事情) - 所以有可能的答案是「如果你需要這樣做,你就會做其他事情。」請[編輯]您的問題並添加更多上下文。 – martineau
「self.methods」究竟是什麼?如果可能的話,請用'request.get'和'request.post'(以及相關的多處理)的方法顯示類。 – martineau
@martineau我只是使用self.mathods這個名字....他們只是任何類的方法,它採取自我......代碼可以在鏈接的SO帖子中找到......其相同或相似 – vks