python - 为什么加载 pickle 对象比加载文件花费的时间长得多?

标签 python serialization pickle

我注意到用 pickle 加载包含 5000 个对象的字典需要很长时间(分钟)——但是加载包含 5000 个实体的文件的 json 需要很短的时间(秒)。我知道一般情况下,对象会带来一些开销——而在 OOP 中,与跟踪此类对象相关的开销是为了方便使用它们而付出的代价的一部分。但是为什么加载 pickle 对象需要这么长时间。幕后发生了什么?与仅将对象的数据写入文件相比,序列化对象的相关成本是多少? pickle 是否将对象恢复到内存中的相同位置或其他什么? (也许将其他物体移开)。如果序列化加载速度较慢(至少 pickle 是),那有什么好处?

最佳答案

假设您正在使用 Python 2.7 标准 picklejson 模块...

因此,您基本上是在将纯 Python 反序列化器与优化的 C 反序列化器进行比较。这不是一个公平的比较,即使序列化格式相同也是如此。

关于python - 为什么加载 pickle 对象比加载文件花费的时间长得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24275221/

相关文章:

Python pickle 错误 : TypeError: object pickle not returning list. numpy 的问题?

python - 如何在 python 中探索包

python - 在 Ubuntu 上安装 python-igraph 时出错(从命令行)

python unicode 支持

c++ - 从同一代码库序列化 std::function

c# - JSON.NET 序列化对象,其中属性名称以点开头

python - 命名管道不在 Python 中刷新

java - 序列化对象会包含元数据吗?

python - 将数据从套接字绘制到 TKinter 时,pickle 出现 EOFError

python - 在 Windows 中转储 Python sklearn 模型并在 Linux 中读取它