在通过MultiProcessing池方法执行函数时,我遇到了很大困难
dill.load('somefile.sav','rb')代码是这样的:
import dill as dill
import multiprocessing_on_dill as mp
dill_func = dill.load('somefile.sav','rb')
def some_mp_func(x):
dill_func(x)
if (__name__ == '__main__'):
__spec__ = "ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>)"
x="test"
pool = mp.Pool(processes = (8))
pool.map(some_mp_func, x)
pool.close()
pool.join()dill_func是一个SKlearn管道。
产出如下:
NameError: name 'Y' is not defined其中'Y‘是dill_func中的一个函数,它是dill_func类的一部分。
在没有多处理的情况下运行some_mp_func(x)非常好,没有名称错误。有什么建议吗?
发布于 2018-10-09 14:46:24
解决方案:当转储时使用此设置
dill.settings['recurse']=Truehttps://stackoverflow.com/questions/52721543
复制相似问题