Python Mongodb游标迭代速度慢

Python Mongodb游标迭代速度慢,python,mongodb,pymongo,Python,Mongodb,Pymongo,我正在从mongodb查询数据,数据块总共有100多条记录。然后希望在函数中处理这些记录 我的问题 cursor = collection.find({'facial_task':False}).sort("_id", -1).skip(1000000).limit(10000) 当我在光标上迭代时,它花费了太多时间,并且卡住了很多,即使我将结果的数量限制为10个。我甚至使用批大小检索结果,但在处理循环时;这需要太多的时间 我的循环是这样的 for dd in curso

我正在从mongodb查询数据,数据块总共有100多条记录。然后希望在函数中处理这些记录

我的问题

cursor = collection.find({'facial_task':False}).sort("_id", -1).skip(1000000).limit(10000) 
当我在
光标上迭代时
,它花费了太多时间,并且卡住了很多,即使我将结果的数量限制为10个。我甚至使用批大小检索结果,但在处理循环时;这需要太多的时间

我的循环是这样的

for dd in cursor:
            ab = threading.Thread(target=insert_func, args=(dd,)) 
            ab.start()
            main_threads.append(ab)
            if len(main_threads) >= 5000:
                print("****Joining Main Thread***")
                for ii in main_threads:
                    ii.join()
                main_threads = []

如果从第一次迭代开始减速,那么它必须与游标本身有关

Mongodb游标不像整个集合的“chached”列表;当您在db上迭代时,它一次查询一个块。
您可以尝试将光标投射到列表中,查看迭代是否显示出显著的加速。

问题甚至在启动线程之前就存在了;当我调试这个程序时,程序在第一次迭代中遇到了问题。好的,谢谢你的澄清。编辑我的回答谢谢更新。我明白了,但即使将光标投射到列表中也需要大量时间。这对我来说没有任何意义,虽然我已经安静地做了一段时间,但是在一小部分数据上。我认为问题可能是结果没有继续,mongo可能在后端处理数据。我甚至试图将限制降低到10,但没有任何区别。嗯,这很奇怪。也许您可以设置mongodb的日志详细度,以查看它实际在做什么,并找出它挂起的步骤。
insert_func
做什么?它处理它获取的数据并转储到单独的数据库中。这一处理可以通过聚合管道完成吗?不,我不知道;我不这么认为。但我面临的问题甚至还没有开始。当我调试I时,循环在第一次迭代中阻塞。您是否检测了循环和insert_func,以便您可以知道每个步骤需要多长时间?