Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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 使用Pickle vs数据库加载大量数据?_Python_Database_Computer Vision_Pickle - Fatal编程技术网

Python 使用Pickle vs数据库加载大量数据?

Python 使用Pickle vs数据库加载大量数据?,python,database,computer-vision,pickle,Python,Database,Computer Vision,Pickle,我以前保存了一个字典,它映射图像\名称->特征向量列表,文件大小约为32 Gb。我一直在使用cPickle来加载字典,但由于我只有8GB的RAM,这个过程需要花费很长时间。有人建议使用数据库存储所有信息,并从中读取,但这是比从磁盘读取文件更快/更好的解决方案吗?为什么?使用数据库,因为它可以让您更快地查询。我以前做过这个。我建议不要使用cPickle。您使用的是什么具体实现 这取决于数据的类型和数量。您可能还需要考虑只存储主要组件,然后动态重新计算其余的组件,如果计算上可行的话。我存储的是sif

我以前保存了一个字典,它映射图像\名称->特征向量列表,文件大小约为32 Gb。我一直在使用cPickle来加载字典,但由于我只有8GB的RAM,这个过程需要花费很长时间。有人建议使用数据库存储所有信息,并从中读取,但这是比从磁盘读取文件更快/更好的解决方案吗?为什么?

使用数据库,因为它可以让您更快地查询。我以前做过这个。我建议不要使用cPickle。您使用的是什么具体实现

这取决于数据的类型和数量。您可能还需要考虑只存储主要组件,然后动态重新计算其余的组件,如果计算上可行的话。我存储的是sift描述符,构建这些描述符需要花费很长时间,所以我真的不能每次都计算它们。它们是1×128向量,你真的需要考虑是否需要同时提供所有的数据。如果你有很多图片,你可能一次只需要一张,而你可能不会对其他的图片做任何事情。我敢肯定,从数据库中逐个选择几个图像要比一次加载32GB数据快得多;)我确实同时需要它,因为我在整个描述符列表上运行kmeans集群,所以我认为没有办法不将它们放在主内存中。如果你真的在做需要32GB数据存储在内存中的计算,那么数据库就帮不了你。我会重新考虑你的算法,或者得到更多的内存。另请参见inmemory dictionary(=hashmap)比db快得多(如果它在内存中而不是在交换中)。如果真的需要32gb,我会使用db,不是因为速度,而是因为内存。