问题标签 [pickle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
21378 浏览

python - 如何先读取二进制泡菜数据,然后再取消泡菜?

我正在解开磁盘上大约 1GB 大小的 NetworkX 对象。虽然我将它保存为二进制格式(使用协议 2),但解封该文件需要很长时间——至少半小时。我运行的系统有足够的系统内存(128 GB),所以这不是瓶颈。

我在这里读过,酸洗可以通过首先将整个文件读入内存然后解开它来加快酸洗(那个特定的线程是指我没有使用的python 3.0,但这一点在python 2.6中仍然应该是正确的)。

我如何先读取二进制文件,然后解压它?我试过了:

但这会返回:

有任何想法吗?

0 投票
8 回答
17533 浏览

python - 如果我有足够的 RAM,如何加快解开大型对象的速度?

使用 cPickle 读取一个 1 GB 的 NetworkX 图形数据结构需要一个小时(当作为二进制文件存储在磁盘上时,它的 1 GB)。

请注意,该文件会快速加载到内存中。换句话说,如果我运行:

我怎样才能加快这最后的操作?

请注意,我已经尝试使用两种二进制协议(1 和 2)来腌制数据,而且我使用哪种协议似乎没有太大区别。另请注意,虽然我使用的是上面的“loads”(意为“加载字符串”)函数,但它加载的是二进制数据,而不是 ascii 数据。

我正在使用的系统上有 128gb 的 RAM,所以我希望有人会告诉我如何增加一些埋在 pickle 实现中的读取缓冲区。

0 投票
1 回答
716 浏览

ruby-on-rails - 黄瓜泡菜的正则表达式错误太大

当我尝试运行我的黄瓜功能时,我遇到了错误。

0 投票
4 回答
43380 浏览

python - Python:无法腌制模块对象错误

我正在尝试腌制一堂大课并获得

TypeError:无法腌制模块对象

尽管浏览了网络,但我无法完全弄清楚这意味着什么。而且我不确定module object是哪个造成了麻烦。有没有办法找到罪魁祸首?堆栈跟踪似乎没有任何指示。

0 投票
2 回答
125 浏览

django - 从腌制数据加载会导致新保存的数据库错误

为了节省移动数据的时间,我挑选了一些模型并将它们转储到文件中。然后我使用相同的模型将它们重新加载到另一个数据库中。保存工作正常,对象保留了我想要的旧 ID。但是,在保存新对象时,我遇到了 nextval 错误。

不太擅长 postgres,我不知道如何解决这个问题,这样我就可以用他们现有的 ID 保留旧记录,同时能够继续添加新数据。

谢谢,托马斯

0 投票
2 回答
125 浏览

python - 设计问题?

我正在构建音乐应用程序,用户可以在其中执行多项任务,包括但不限于听歌、喜欢歌曲、向朋友推荐歌曲等等。目前我有这个模型:

到目前为止,我想到了两种解决方案。1. 将字符串保存到数据库。例如“你听过歌曲 xyz”。2. 创建关于活动的字典并使用 pickle 或 json 保存到数据库。

例如

我倾向于第二个实现,但不太确定。

那么您如何看待这两种方法?你知道实现目标的更好方法吗?

0 投票
2 回答
7011 浏览

python - 为什么附加二进制泡菜不起作用?

我知道这并不完全是 pickle 模块的用途,但我原以为这会起作用。我正在使用 Python 3.1.2

这是背景代码:

现在,当我运行它时,它只打印出传递给类的第一个对象。

这是因为它看到了早期的EOF吗?也许附加仅适用于ascii?(在这种情况下,为什么要让我做 mode='ba'?)有没有更简单的方法来做到这一点?

0 投票
4 回答
4783 浏览

python - Python:在不使用“setrecursionlimit”的情况下腌制高度递归的对象

我一直RuntimeError: maximum recursion depth exceeded在尝试腌制一个高度递归的树对象。很像这里的这个提问者

他通过将递归限制设置得更高来解决他的问题sys.setrecursionlimit。但我不想这样做:我认为这更像是一种解决方法而不是解决方案。因为我希望能够腌制我的树,即使它们有 10,000 个节点。(目前它在 200 左右失败。)

(另外,每个平台的真正递归限制是不同的,我真的很想避免打开这个蠕虫罐。)

有没有办法从根本上解决这个问题?如果只有 pickle 模块会使用循环而不是递归进行腌制,我就不会遇到这个问题。也许有人知道我如何在不重写 pickle 模块的情况下导致这样的事情发生?

我将不胜感激任何其他想法如何解决这个问题。

0 投票
1 回答
4604 浏览

python - 如何使用自引用和带有插槽的类来腌制和取消腌制对象?

当该对象通过其属性之一引用自身时,从具有插槽的类中提取对象的正确方法是什么?这是一个简单的示例,使用我当前的实现,我不确定它是否 100% 正确:

例如,这可以通过以下方式进行测试:

这是一个正确/可靠的实现吗?如果从一个类继承,__getstate__应该如何__setstate__写?由于“循环”字典,内部是否存在内存泄漏?my_class__slots____setstate__

PEP 307中有一句话让我想知道酸洗my_class对象是否可能以一种健壮的方式进行:

__getstate__方法应该返回一个表示对象状态的可挑选值,而不引用对象本身。

这是否与对对象本身的引用被腌制的事实相冲突?

这是很多问题:任何评论、评论或建议将不胜感激!

0 投票
1 回答
1887 浏览

python - 在 Python 3 中腌制一个未绑定的方法

我想在 Python 3.x 中腌制一个未绑定的方法。我收到此错误:

这个事情谁有经验?


注意:在 Python 2.x 中,默认情况下也无法腌制未绑定的方法;我设法以某种我不理解的奇怪方式在那里做到了:我用copy_regMethodType 类的模块编写了一个 reducer,它涵盖了绑定和未绑定的方法。但是reducer只解决了绑定方法的情况,因为它依赖于my_method.im_self. 不可思议的是,它还导致 Python 2.x 能够腌制未绑定的方法。这不会发生在 Python 3.x 上。