Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 大量对象的持久性_Python_Persistence - Fatal编程技术网

Python 大量对象的持久性

Python 大量对象的持久性,python,persistence,Python,Persistence,我有一些代码,我正在工作,从一个网站上刮取一些数据,然后从该网站提取某些关键信息,并将其存储在一个对象中。我每天创建几百个这样的对象,每个对象都来自唯一的url。这是相当好的工作,但是,我没有经验在Python中哪些选项可以用于持久性,哪些最适合我的需要 目前我正在用泡菜。为此,我保留了所有这些网页对象,并在创建新对象时将它们添加到列表中,然后将该列表保存到pickle(然后在更新列表时重新加载)。然而,由于我需要一些GB的数据,我发现pickle有点慢。这并非不可行,但我想知道是否有更合适的替

我有一些代码,我正在工作,从一个网站上刮取一些数据,然后从该网站提取某些关键信息,并将其存储在一个对象中。我每天创建几百个这样的对象,每个对象都来自唯一的url。这是相当好的工作,但是,我没有经验在Python中哪些选项可以用于持久性,哪些最适合我的需要

目前我正在用泡菜。为此,我保留了所有这些网页对象,并在创建新对象时将它们添加到列表中,然后将该列表保存到pickle(然后在更新列表时重新加载)。然而,由于我需要一些GB的数据,我发现pickle有点慢。这并非不可行,但我想知道是否有更合适的替代方案。我真的不想分解对象的结构并将其存储在sql类型的数据库中,因为将方法和数据保持为单个对象对我来说很重要

搁置是我一直在研究的一个选项,因为我的印象是,这样我就不必对所有的旧条目(只是最近一天需要更新的条目)进行解密和酸洗,但我不确定搁置是否是这样工作的,它的速度有多快


因此,为了避免长篇大论,我的问题是:存储大量对象(所有对象都是相同类型)的首选持久化方法是什么,以随着集合的增长保持读/写速度?

Martijn的建议可能是替代方法之一

您可以考虑将泡菜对象直接存储在SQLite数据库中,该数据库仍然可以从Python标准库管理。 使用StringIO对象在数据库列和python对象之间进行转换


您没有提到您现在正在酸洗的每个对象的大小。我想它应该保持在sqlite的限制范围内。

相反,请看一下。谢谢,我没有注意到ZODB,但我现在意识到我的问题可能是重复的。谢谢Toruk。我在对象上使用sys.getsizeof()进行了检查,每个对象大约有72字节。你知道ZODB或sqlite会更快吗?ZODB会更简单、更透明。@Martijn,我完全同意。只是如果我还没有弄清楚如何处理手头的所有pickle对象,我想解决性能问题。sqlite附带了标准库,因此我认为可能可以节省一些时间来阅读文档,调整包的安装和概念验证。还有其他的对象数据库,然后是zodb。可能需要进行一些评估,然后才能使用这些对象数据库中的任何一个登船。