dill.loads () сообщает о TypeError - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь использовать многопроцессорность для моего кода на python2.7, и при использовании пула произошла ошибка из-за ошибки посадки. Тогда я использовал укроп и надеюсь, что это может пройти. Но Pool сообщает об ошибке «unpicklingerror: аргумент класса newobj имеет нулевую tp_new» ошибку. Тогда я попробовал для простого примера как:

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

Он сообщает «TypeError: TypeErro ... ew __ () ',)» из pickle.py:860.

Странно, что он печатает только половину сообщения, и я застрял здесь. Любая помощь приветствуется. Или, если есть другое решение, которое я могу сделать многопроцессорной работой, будет полезно. В основном я пытаюсь распараллелить некоторые части большого проекта Python. Подпроцесс принимает несколько экземпляров класса A, вызывает методы класса one и возвращает сгенерированные экземпляры класса B. Поэтому мне нужно использовать Queue () для передачи данных.

Кстати, multiprocess.Pipe также использует рассол для передачи объектов? Я знаю, что Queue делает, но я не уверен в Pipe, хотя думаю, что это так.

Редактировать:

Я думаю, что основной причиной является то, что у меня есть определенный объект расширения C в одном из элементов данных. Но как мне справиться с такой структурой данных? Я попытался определить setstate и getstate , но это бесполезно, так как мне все еще нужна эта расширенная информация об объекте.

...