【发布时间】:2011-11-03 01:24:49
【问题描述】:
Python 的 pickle(我在这里说的是标准 Python 2.5/2.6/2.7)不能 pickle 锁、文件对象等。
它也不能 pickle 生成器和 lambda 表达式(或任何其他匿名代码),因为 pickle 实际上只存储名称引用。
对于锁和依赖于操作系统的功能,为什么你不能腌制它们的原因是显而易见的并且是有道理的。
但是为什么不能腌制生成器?
注意:为了清楚起见——我感兴趣的是根本原因(或设计决策中的假设和选择)为什么,而不是“因为它给你一个泡菜错误”。
我意识到这个问题的目标有点宽泛,所以这里有一个经验法则来判断你是否回答了这个问题:“如果提出这些假设,或者允许的发电机类型以某种方式受到更多限制,酸洗发电机会再次工作吗?”
【问题讨论】:
-
什么时候腌制发电机有意义?
-
@NullUser:不难想象;你正在迭代一个,你想停止你的程序,然后从你离开的地方继续。
-
...或同时恢复,但来自不同的程序(=序列化也用于网络传输)
-
我认为这个问题不应该结束。
-
是的,一开始我实际上误读了他的问题,(希望你能收回近距离投票)而且我是第一个投票重新开放的人。
标签: python generator pickle python-stackless