我实际上正在从事一个搜索引擎项目。我们正在使用 python + mongoDb。
对 mongo 数据库执行 find() 命令后,我有一个 pymongo 光标。 pymongo 游标有大约 20k 个结果。
我注意到,与对相同大小的列表的正常迭代相比,对 pymongo 光标的迭代非常慢。
我做了一些基准测试:
- 迭代 20k 字符串列表:0.001492 秒
- 具有 20k 结果的 pymongo 游标迭代:1.445343 秒
差别确实很大。也许对于这么多结果来说不是问题,但如果我有数百万个结果,时间将是不可接受的。
有谁知道为什么 pymongo 游标迭代太慢?
知道如何在更短的时间内迭代光标吗?
一些额外的信息:
- Python v2.6
- PyMongo v1.9
- MongoDB v1.6 32 位
您的 pymongo 安装是否使用包含的C 扩展 http://api.mongodb.org/python/current/installation.html#dependencies-for-installing-c-extensions-on-unix?
>>> import pymongo
>>> pymongo.has_c()
True
上周我花了大部分时间尝试调试一个中等大小的查询和相应的处理,运行时间为 20 秒。安装 C 扩展后,整个相同的过程大约需要一秒钟。
要在 Debian 中安装 C 扩展,请在运行简易安装之前安装 python 开发标头。就我而言,我还必须删除旧版本的 pymongo。请注意,这将从 C 编译二进制文件,因此您需要所有常用工具。 (海湾合作委员会等)
# on ubuntu with pip
$ sudo pip uninstall pymongo
$ sudo apt-get install python-dev build-essential
$ sudo pip install pymongo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)