Ответ 1
Если вы не публикуете сокращенную версию своего кода, трудно помочь. Однако dill
имеет некоторые встроенные методы обнаружения. Посмотрите dill.detect
.
>>> # trace dill pickling of objects, by printing out step by step trace
>>> dill.detect.trace(True)
Или путем осмотра объектов.
>>> dill.detect.badobjects(yourfailingobject, depth=1)
Там также dill.detect.badtypes
и т.д.
Или вы можете проследить, как объекты связаны друг с другом, с dill.detect.parent
, dill.detect.children
, dill.detect.reference
и т.д.
Здесь приведен пример использования dill
(плюс objgraph
для визуализации) для отслеживания циклических ссылок. https://github.com/uqfoundation/dill/issues/58
Также существует большой список всех, что dill
не знает, как сериализоваться в dill._objects
- по крайней мере, первые 15 разделов стандартной библиотеки python, а также некоторые другие.