Python + MongoDB - 游标迭代太慢

2024-02-04

我实际上正在从事一个搜索引擎项目。我们正在使用 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(使用前将#替换为@)

Python + MongoDB - 游标迭代太慢 的相关文章

  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • MongoDB 过滤嵌套对象中的数组元素

    我有一个文件如下 id ObjectId 56423b2558cb340599108b35 test source member abc member xyz 我想过滤数组元素 xyz 并且我正在尝试以下查询 db coll find te
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 管理员未授权 Mongodb 执行 listDatabases 命令

    删除 mongodb 用户后 无法重新连接 mongo 没有 验证 我创造了超级用户 https docs mongodb org v2 6 reference built in roles superuser roles tomuser
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P

随机推荐

  • java中这个说法正确吗?

    我想使用数据报套接字在两台计算机之间进行数据传输 我使用以下行 host InetAddress getByAddress mypc new byte 192 168 1 110 但是当我使用上述语句时 我收到此错误 可能会损失精度 所以我
  • 相当于: git log --exclude-author?

    在工作中 我们有一个 git 存储库 其中大部分提交都是机器人用户自动提交的 有时我更喜欢查看该存储库中的 git 日志 但看不到自动提交 我想它可以被描述为倒置的 git log author 或 git log exclude auth
  • 从 iPhone 上的视频输出获取静态图像?

    我正在编写一个应用程序来显示 iPhone 相机所看到的光照条件的统计数据 我每秒拍摄一张图像 并对其进行计算 为了捕获图像 我使用以下方法 void captureNow AVCaptureConnection videoConnecti
  • 使用 hiera 设置类参数?

    我试图弄清楚如何使用 hiera 设置类参数的值 我正在使用两个简单的类进行测试 testhiera 和 testhiera2 以下是这些课程 root puppet el7 001 modules cat testhiera manife
  • Xcode 上 Playground 的默认目录

    当我使用 Xcode 10 1 创建新的 Playground 时 它始终默认为 Library Autosave Information 我有什么办法可以改变这个吗 解决方法与symlink Close XCode gt 在终端中输入 m
  • Android Room类型转换多种枚举类型

    我正在为我的 Room 数据库编写一个类型转换器 我有几个自定义枚举类 我想在存储在数据库中时将它们全部转换为其序数 那么 有没有办法简化它 例如传递通用枚举类型 而不是为每个单独的类编写以下内容 class Converter TypeC
  • 哪个 ember.js 组件负责将模板插入到 DOM 中?

    我正在构建ember js rails应用程序 所有车把模板都存储在 js 文件中 我想了解当路由器更改状态时它们如何插入到 DOM 中 Ember 的哪一部分执行此操作 我如何告诉 ember 放置模板 现在我只能将我的模板附加到我有一个
  • Angular 4未加载组件

    我尝试在 Angular 4 应用程序中使用 Angular 路由 但该应用程序无法加载与请求的路由匹配的组件 Here is app routing module ts import NgModule from angular core
  • 有没有快速的算法来删除字符串中的重复子串?

    有一个类似的字符串 dxabcabcyyyydxycxcxz 我想将它合并到 dxabcydxycxz 其他例子 ddxddx gt dxdx abbab gt abab 规则是 if adjacent and same merge Suc
  • 从 StringIO 读取直到遇到某个字节的快速方法

    假设我有一些StringIO from cStringIO 我想从中读取缓冲区 直到遇到某个字符 字节 例如 Z 所以 stringio StringIO ABCZ123 buf read until stringio Z buf is n
  • 使用 REST API 持久化实体

    对于 Symfony2 中的项目 我需要能够使用外部 RESTful API 而不是数据库来保存 检索实体 由于 Doctrine 将实体映射到数据库表的一行 因此我认为创建从实体到外部 API 的映射也应该很容易 然而 这对我来说是新的
  • 如何从公会的每个成员中删除角色

    如何从服务器内的每个用户中删除角色 我尝试使用let everyone message guild members get and let everyone message guild members但他们都没有工作 这是整个代码 cons
  • TBB 可能存在内存泄漏

    测试程序 include
  • height=100% 不起作用

    下面的代码都是height 100 在chrome中工作正常 但在firefox和ie 7中显示很奇怪 这不完全是100 高度 有人知道吗 太感谢了
  • 从 iOS 7 Beta 测试者那里获取 UDID

    我正在通过无线方式向 Beta 测试人员部署应用程序的测试版本 在 iOS 7 之前 我可以通过让他们安装 UDID Pro 之类的应用程序并将其通过电子邮件发送给我来获取他们的 UDID 如果 Beta 测试人员使用 iOS 7 我如何从
  • 在 AlloyUI Scheduler 中保存、编辑、删除和取消事件

    如何从 AlloyUI 的 Scheduler 监听 保存 编辑 删除 和 取消 事件 我需要将值保存在数据库中以供将来使用 但我没有看到任何相关文档 我当前的代码是这样的 YUI use aui scheduler function Y
  • Android 中的 Kotlin 与地图

    override fun onCreateView inflater LayoutInflater container ViewGroup savedInstanceState Bundle View var view View infla
  • SessionNotCreatedException:消息:会话未创建:此版本的 ChromeDriver 仅支持使用 Selenium ChromeDriver v81 的 Chrome 版本 81

    我从 selenium 和 os 导入了 webdriver 我希望能够成功运行这段代码 driver webdriver Chrome executable path os path abspath chromedriver 我收到的错误
  • Spacy 更新 msvc 未找到

    我尝试将 spacy 从版本 2 0 18 更新到版本 2 1 1 但每次我尝试运行命令时 pip install spacy nightly or pip install U spacy 2 1 1 我刚刚得到 error WinErro
  • Python + MongoDB - 游标迭代太慢

    我实际上正在从事一个搜索引擎项目 我们正在使用 python mongoDb 对 mongo 数据库执行 find 命令后 我有一个 pymongo 光标 pymongo 游标有大约 20k 个结果 我注意到 与对相同大小的列表的正常迭代相