问题标签 [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 投票
5 回答
14259 浏览

python - copy.deepcopy 与 pickle

我有一个小部件的树形结构,例如集合包含模型,模型包含小部件。我想复制整个集合,copy.deepcopy与“腌制和去腌制”对象相比速度更快,但是用 C 编写的 cPickle 更快,所以

  1. 为什么我(我们)不应该总是使用 cPickle 而不是 deepcopy?
  2. 有没有其他的副本替代品?因为 pickle 比 deepcopy 慢,但 cPickle 更快,所以 deepcopy 的 C 实现可能会是赢家

示例测试代码:

时间:

0 投票
12 回答
65157 浏览

python - PicklingError: 不能腌制:它与十进制不同的对象。十进制

这是我今天在 <a href"http://filmmaster.com">filmmaster.com 遇到的错误:

这到底是什么意思?它似乎没有多大意义......它似乎与django缓存有关。您可以在此处查看整个回溯:

Filmmaster 的源代码可以从这里下载:bitbucket.org/filmmaster/filmmaster-test

任何帮助将不胜感激。

0 投票
2 回答
3854 浏览

python - Python 2.6 通过队列/管道/等发送连接对象

鉴于此错误(Python 问题 4892)会导致以下错误:

有谁知道在队列上传递 Connection 对象的解决方法?

谢谢你。

0 投票
3 回答
7728 浏览

python - 使用pyodbc进行Python多处理和数据库访问“不安全”?

问题:

我收到以下回溯,但不明白它的含义或如何解决它:

情况:

我有一个充满待处理数据的 SQL Server 数据库。我正在尝试使用多处理模块来并行化工作并利用我计算机上的多个内核。我的一般班级结构如下:

  • 我的管理器类
    • 这是程序开始的主类。
    • 它创建了两个 multiprocessing.Queue 对象,一个work_queue和一个write_queue
    • 它还创建并启动其他进程,然后等待它们完成。
    • 注意:这不是multiprocessing.managers.BaseManager() 的扩展
  • 我的读者类
    • 此类从 SQL Server 数据库中读取数据。
    • 它将项目放在work_queue.
  • 我的工人阶级
    • 这是工作处理发生的地方。
    • 它从 中获取项目work_queue并将完成的项目放入write_queue.
  • 我的作家类
    • 该类负责将处理后的数据写回 SQL Server 数据库。
    • 它从write_queue.

这个想法是,将有一名经理、一名读者、一名作家和许多工人。

其他详情:

我在stderr中得到了两次回溯,所以我认为它发生在读者和作者一次。我的工作进程创建得很好,但只是坐在那里,直到我发送一个 KeyboardInterrupt,因为它们在work_queue.

读取器和写入器都有自己的数据库连接,在初始化时创建。

解决方案:

感谢 Mark 和 Ferdinand Beyer 的回答和问题导致了这个解决方案。他们正确地指出 Cursor 对象不是“pickle-able”,这是多处理用于在进程之间传递信息的方法。

我的代码的问题是,MyReaderClass(multiprocessing.Process)两者都以他们的方法MyWriterClass(multiprocessing.Process)连接到数据库。__init__()我在 中创建了这两个对象(即称为它们的 init 方法)MyManagerClass,然后调用了start().

所以它会创建连接和游标对象,然后尝试通过pickle将它们发送到子进程。我的解决方案是将连接和游标对象的实例化移动到 run() 方法,直到子进程完全创建后才会调用该方法。

0 投票
1 回答
1083 浏览

python - 由于 pickle 错误,在 Django 缓存 API 中设置对象失败

我正在尝试在 Django 缓存 API 中手动设置一个对象,但它失败了(我认为是因为酸洗?)该对象是由第三方提供给我的,我的代码是:

当我运行它时,我得到一个错误;

我对python很陌生,我想知道如何最好地解决这个问题,我需要先腌制一些东西吗?

0 投票
1 回答
1721 浏览

python - 泡菜后文件大小显着增加

我正在读取文件并将数据(一旦加密)发送到字典,并在加密之前和之后对数据进行哈希处理。然后我腌制字典,但发现文件大小与源文件大小相比很大。如果我将加密数据直接写入文件,则大小与源相同。知道为什么我的腌制文件这么大吗?

0 投票
1 回答
1057 浏览

pickle - 如何解析 Perforce“pickle”二进制输出?

Perforce 命令行有一个特殊的开关,-G,据说它使用 python 的“pickle”序列化格式使其输出是机器可读的。一般情况下是这样吗?

例如,考虑 的输出p4 -G diff -duw3 <file1> <file2> <file3>。据我所知,输出是一个序列:pickle、raw diff、pickle、raw diff、pickle、raw diff。它似乎不包含任何使人们能够可靠地定位泡菜/差异边界的分隔符。

我是否遗漏了什么,或者这种“机器可读”格式实际上不是机器可读的?如何在其输出中找到泡菜和原始差异之间的界限?

0 投票
10 回答
49800 浏览

python - ValueError:不安全的字符串泡菜

当我尝试加载使用 cPickle 转储的内容时,我收到错误消息:

转储和加载工作都在同一台计算机上完成,因此使用相同的操作系统:Ubuntu 8.04。

我该如何解决这个问题?

0 投票
2 回答
1518 浏览

python - 无法在 Mac 上取消在 Windows 上腌制的文件

我有一个简单的类,我正在酸洗(转储)到一个文件中。在 OS X 上可以正常工作,在 Windows 上可以正常工作。

但是,虽然在 Windows 上我可以很好地加载/取消提取对象 - 当 Windows 然后提取此文件并将其保存回磁盘时,它在 OS X 上变得不可读(尽管在 Windows 中它仍然表现正常)。

我从 OS X 得到的错误是它无法导入 require 类。

我很困惑,因为只要我不在 Windows 中腌制任何东西,这一切都可以正常工作!(即使那样它在 Windows 中仍然可以正常工作)

我听说它可能是行尾,我的其他想法可能与操作系统中使用的编码类型不同有关?但我真的不知道如何尝试完全诊断和/或解决这个问题,所以任何帮助将不胜感激!

0 投票
13 回答
145563 浏览

python - 不能腌制当使用多处理 Pool.map()

我正在尝试使用multiprocessing'sPool.map()功能同时分配工作。当我使用以下代码时,它工作正常:

但是,当我在更面向对象的方法中使用它时,它就不起作用了。它给出的错误信息是:

当以下是我的主程序时会发生这种情况:

以下是我的someClass课:

任何人都知道问题可能是什么,或者解决它的简单方法?