dill.loads()报告TypeError

时间:2019-06-12 06:27:20

标签: pickle dill

我正在尝试对我的python2.7代码使用多重处理,并且在使用Pool时由于酸洗错误而失败。然后我用莳萝,希望它能过去。但是Pool报告相同的“ unpicklingerror:newobj类参数具有空的tp_new”错误。 然后我尝试了一个简单的例子:

a = ComplexClass()
r = dill.dumps(a)
a2 = dill.loads(r)

它从pickle.py:860报告“ TypeError:TypeErro ... ew __()',)”。

很奇怪,它只打印一半的消息,而我被困在这里。任何帮助表示赞赏。 或者,如果还有其他可以使多处理工作进行解决的解决方案,将对您有所帮助。 基本上,我正在尝试并行处理一个大型Python项目的某些部分。子进程将接收一些A类实例并调用一个类方法,然后返回生成的B类实例。因此,我需要使用Queue()进行数据传递。

顺便说一句,multiprocess.Pipe是否也使用pickle来传递对象?我知道Queue可以,但是我不确定Pipe是否可以。

修改:

我认为根本原因是我在数据成员之一中有一个C扩展定义的对象。但是我应该如何处理这种数据结构呢?我尝试定义 setstate getstate ,但这没有帮助,因为我仍然需要扩展的对象信息。

0 个答案:

没有答案