Python: 快速轻量级持久化

4 投票
1 回答
1569 浏览
提问于 2025-04-17 02:37

我正在写一个在比较慢的手机上运行的Python程序(当然也可以在其他平台上运行)。在手机上用pickle读取数据大约需要2秒,而用simplejson则明显更慢。这个手机上运行的是Python 2.5.4。

这些数据存储在一些类的不同列表和字典中。我可以相对快速地在json格式和其他格式之间转换。大部分时间似乎都花在了处理pickle或json上,因为单纯读取或写入json或pickle文件的速度要比使用pickle或json快得多。

这个程序需要读取整个数据集,并且需要定期写入数据。

我想我可以想办法把数据转换成文本格式,看看这样是否更快,但重新发明轮子通常不是个好主意。

还有哪些其他存储方式可能更合适呢?

1 个回答

4

那关于 marshal 模块呢?根据 这些基准测试,它的速度比 pickle 快很多。不过,一定要仔细阅读并理解文档开头的警告。

另外,确认一下:你有没有使用 cPickle?如果没有,试试这个——它的速度比 pickle 快很多。

或者,因为你的数据比较简单,你也可以自己写一个,使用 pyrex。如果你想走这条路,MsgPack 序列化器 会是一个不错的起点。

撰写回答