我在做一些Python多,使用類,而要做到這樣的事情,我不得不使用這個approach:酸洗靜態方法 - Python的
def _pickle_method(method):
func_name = method.im_func.__name__
obj = method.im_self
cls = method.im_class
if func_name.startswith('__') and not func_name.endswith('__'): #deal with mangled names
cls_name = cls.__name__.lstrip('_')
func_name = '_' + cls_name + func_name
print cls
return _unpickle_method, (func_name, obj, cls)
def _unpickle_method(func_name, obj, cls):
for cls in cls.__mro__:
try:
func = cls.__dict__[func_name]
except KeyError:
pass
else:
break
return func.__get__(obj, cls)
的問題是因爲我有一些靜態方法,也應該並行化。但我found與此我不能pickle靜態方法。我想知道有一種方法可以改變這種方法來做這樣的事情,所以我可以醃製非靜態和靜態方法。
預先感謝您。
爲什麼你需要這種方法?你的類方法是動態生成的嗎? –
這是我發現多處理類方法的唯一方法。 – pceccon
爲什麼不將常規函數傳遞給池,而是在該函數中調用方法? –