2011-10-12 24 views
0

我有一个复杂的Python程序。我试图使用多进程池来并行化它。我收到错误消息,如何确定哪个对象导致PicklingError?

PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed

回溯显示statemen return send(obj)

我的假设是,它的“目标文件”,是造成问题,我需要让咸菜,能。

如何确定哪个对象是问题的原因?该计划很复杂,只是猜测可能需要很长时间。

回答

0

为什么不在返回发送(obj)之前添加一些记录?在一个最起码,这可能帮助:

print repr(obj) 
return send(obj) 

或者,只打印时,它会导致一个错误:

try: 
    return send(obj) 
except: 
    print '***', repr(obj) 
    raise 
0

你看到可以通过传递一种错误的原因引起的错误函数转换为multiprocessing.Pool方法。传递的函数必须直接从其父模块导入。例如,它不可能是一个类的方法。

相关问题