腌菜替代品

2024-06-06 20:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试序列化一个大的(~10**6行,每个行有~20个值)列表,供以后自己使用(因此pickle缺乏安全性并不重要)。

列表中的每一行都是一个值元组,从某些SQL数据库派生。到目前为止,我已经看到了datetime.datetime、字符串、整数和NoneType,但我可能最终不得不支持其他数据类型。

对于序列化,我考虑过pickle(cPickle)、json和纯文本——但是只有pickle保存类型信息:json不能序列化datetime.datetime,纯文本有其明显的缺点。

不过,对于这么大的数据,cPickle的速度相当慢,我正在寻找一个更快的替代方案。


Tags: 字符串文本数据库json列表sqldatetime序列化
3条回答

Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler.

advantages over XML:

  • are simpler
  • are 3 to 10 times smaller
  • are 20 to 100 times faster
  • are less ambiguous
  • generate data access classes that are easier to use programmatically

https://developers.google.com/protocol-buffers/docs/pythontutorial

我想你应该看看。它的速度应该快得离谱,至少比使用RDBMS快,因为它非常松懈,并且没有任何读/写限制,另外,您还可以获得一个更好的接口来管理数据,至少与挑选数据相比是这样。

Pickle实际上非常快,只要您不使用(默认)ASCII协议。确保使用protocol=pickle.HIGHEST_PROTOCOL转储。

相关问题 更多 >