我正在尝试对我的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 ,但这没有帮助,因为我仍然需要扩展的对象信息。