泡菜替代品

新手上路,请多包涵

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

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

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

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

原文由 Guy Adini 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 503
2 个回答

我认为您应该看一下 PyTables 。它应该快得离谱,至少比使用 RDBMS 快,因为它非常松散并且不强加任何读/写限制,而且您可以获得更好的数据管理界面,至少与 pickle 相比是这样。

原文由 Filip Dupanović 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 Jake Biesinger 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题