Почему генераторы не могут быть обработаны?

Python pickle (я говорю о стандартном Python 2.5 / 2.6 / 2.7 здесь) не может обрабатывать блокировки, файловые объекты и т. д.

Он также не может обрабатывать генераторы и лямбда-выражения (или любой другой анонимный код), потому что в действительности рассол хранит только ссылки на имена.

В случае блокировок и функций, зависящих от ОС, причина , почему вы не можете их обработать, очевидна и имеет смысл.

Но почему вы не можете обработать генераторы?


Примечание : просто для ясности - меня интересует фундаментальная причина (или допущения и варианты, которые вошли в это проектное решение) , почему , а не «потому что это дает вам рассол» ошибка".

Я понимаю, что вопрос является немного широким, поэтому вот эмпирическое правило того, ответили ли вы на него: «Если бы эти предположения были высказаны или тип разрешенного генератора каким-либо образом более ограничен, будут ли генераторы травления работать снова?»

36
задан Mike Pennington 24 November 2011 в 15:53
поделиться