Я выполняю параллельную обработку в Python с использованием модуля многопроцессорности. Я знаю, что некоторые объекты МОГУТ рассориться (таким образом, передаются как аргументы в multi-p), а другие не могут. Например.
class abc():
pass
a=abc()
pickle.dumps(a)
'ccopy_reg\n_reconstructor\np1\n(c__main__\nabc\np2\nc__builtin__\nobject\np3\nNtRp4\n.'
Но у меня есть несколько более крупных классов в моем коде (десяток методов или около того), и это происходит:
a=myBigClass()
pickle.dumps(a)
Traceback (innermost last):
File "<stdin>", line 1, in <module>
File "/usr/apps/Python279/python-2.7.9-rhel5-x86_64/lib/python2.7/copy_reg.py", line 70, in _reduce_ex
raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle file objects
Это не файл-объект, но в других случаях я получаю другие сообщения, которые говорят в основном: "Я не могу разгадать это".
Так что же такое правило? Количество байтов? Глубина иерархии? Фаза луны?