下面链接的文档似乎表明可以对顶级类及其实例进行pickle处理。但根据我对前一个问题的回答来看,这似乎不正确。在我发布的脚本中,pickle接受类对象并写入文件,但这没有用。
这是我的问题:这个文档是错误的,还是有更微妙的东西我不明白?另外,在这种情况下,泡菜是否应该生成某种错误消息?
https://docs . python . org/2/library/pickle . html # what-can-pickle-and-un pickle,
以下类型可以腌制:
完全有可能在python中腌制一个类实例...同时还保存代码以重新构造类和实例的状态。如果您想在泡菜
之上破解解决方案,或者使用基于“特洛伊木马”执行
的方法,以下是操作方法:
如何取消其类存在于不同命名空间(python)中的对象?
或者,如果您使用dill
,您有一个dump
function,它已经知道如何存储类实例、类代码和实例状态:
如何恢复pickle类及其实例
Pickle python类实例加定义
我是dill
作者,我创建dill
部分是为了能够跨多重处理
运送类实例和类方法。
腌制不了
创建一个在模块的顶层定义的类:
foo.py:
class Foo(object): pass
然后运行一个单独的脚本,
script.py:
import pickle
import foo
with open('/tmp/out.pkl', 'w') as f:
pickle.dump(foo.Foo, f)
del foo
with open('/tmp/out.pkl', 'r') as f:
cls = pickle.load(f)
print(cls)
印刷品
<class 'foo.Foo'>
请注意,pickle文件< code>out.pkl仅包含命名定义模块和类名的字符串。它不存储类的定义:
cfoo
Foo
p0
.
因此,在解压定义模块时,foo
必须包含类的定义。如果从定义模块中删除类
del foo.Foo
然后你会得到错误
AttributeError: 'module' object has no attribute 'Foo'
问题内容: 我有一个defaultdict看起来像这样: 问题是,我不能使用cPickle腌制它。我在这里找到的解决方案之一是使用模块级函数而不是lambda。我的问题是,什么是模块级功能?如何在cPickle中使用字典? 问题答案: 除了Martijn的解释之外: 模块级函数是在模块级定义的函数,这意味着它不是类的实例方法,它不嵌套在另一个函数中,并且它是带有名称的“真实”函数,而不是lambd
我用PHPass散列密码已经很久了。我承认仍然有一些我不完全理解(或忽略)的东西来正确地散列密码,所以今天我查看了所有我能找到的关于它的信息。 回顾PHPass文档,我已经进入了这个: 除了实际的哈希之外,phpass 在对新密码或密码进行哈希处理时会透明地生成随机 salt,并将哈希类型、salt 和密码拉伸迭代计数编码到它返回的“hash 编码字符串”中。当phpass根据存储的哈希对密码或密
问题内容: Windows上的Python 3.5,请尝试以下操作: 引发异常: multiprocessing.Process的子类抛出相同的异常: 问题答案: 这样的事情应该起作用: 基本上,a需要a ,并且由于任何原因,实例被腌制时都不会保存(例如,不在方法中)。如果您需要更多的状态(即其他并从方法),那么你就需要从扩展的返回值上述功能。(请注意,如果您使用的是python 2.x,则相应的
问题内容: 最近,有人提出了一些Python代码试图通过使用腌制过程促进分布式计算的问题。显然,该功能在历史上是可能的,但是出于安全原因,该功能被禁用。第二次尝试通过套接字传输功能对象时,仅传输了引用。如果我错了,请纠正我,但我不认为此问题与Python的后期绑定有关。假定不能腌制进程和线程对象,是否有任何方法可以传输可调用对象?我们希望避免为每个作业传输压缩的源代码,因为这可能会使整个尝试变得毫
问题内容: Python的pickle(我在这里说的是标准的Python 2.5 / 2.6 / 2.7)不能腌制锁,文件对象等。 它也不能腌制生成器和lambda表达式(或任何其他匿名代码),因为腌制实际上仅存储名称引用。 在锁和依赖于操作系统的功能的情况下,原因 为何 你不能咸菜他们是明显的,是有道理的。 但是 为什么不能腌制发电机呢? 注 :只是为了清楚起见, -我有兴趣的根本原因(或假设和
问题内容: 我已经根据numpy文档创建了numpy ndarray的子类。特别是,我通过修改提供的代码添加了自定义属性。 我正在使用Python在并行循环中处理此类的实例。据我了解,将范围本质上“复制”到多个线程的方法是使用。 我现在要面对的问题与numpy数组的腌制方式有关。我找不到关于此的任何综合文档,但是莳萝开发人员之间的一些讨论建议我应该专注于该方法,该方法在腌制时被调用。 谁能进一