Mar*_*oni 9 python iteration performance cursor mongodb
我实际上是在搜索引擎项目中工作.
我们正在使用python + mongoDb.
我遇到以下问题:
在对mongo db执行find()命令后,我有一个pymongo游标.
pymongo游标有大约20k的结果.
我注意到,与正常迭代相比,pymongo游标上的迭代非常慢,例如相同大小的列表.
我做了一点基准测试:
-iteration在20k字符串列表中:0.001492秒
- 在pymongo光标上获得20k结果:1.445343秒
差别真的很大.这个数量的结果可能不是问题,但如果我有数百万的结果,那么时间将是不可接受的.
有没有人知道为什么pymongo游标太慢而不能迭代?
我知道如何在更短的时间内迭代光标?
一些额外的信息:
Chu*_*uck 14
你的pymongo安装是否使用附带的C扩展?
>>> import pymongo
>>> pymongo.has_c()
True
Run Code Online (Sandbox Code Playgroud)
我上周大部分时间都在尝试调试中等大小的查询以及需要20秒才能运行的相应处理.一旦安装了C扩展,整个相同的过程大约需要一秒钟.
要在Debian中安装C扩展,请在运行easy install之前安装python开发头文件.在我的情况下,我还必须删除旧版本的pymongo.请注意,这将从C编译二进制文件,因此您需要所有常用工具.(海湾合作委员会等)
# on ubuntu with pip
$ sudo pip uninstall pymongo
$ sudo apt-get install python-dev build-essential
$ sudo pip install pymongo
Run Code Online (Sandbox Code Playgroud)