Обмисляли ли сте подход като:
for line in file
value = line[a:b]
cursor = collection.find({"field": value})
entries = cursor[:] # or pull them out with a loop or comprehension -- just get all the docs
# then process entries as a list, either singly or in batch
Алтернативно, нещо като:
# same loop start
entries[value] = cursor[:]
# after the loop, all the cursors are out of scope and closed
for value in entries:
# process entries[value], either singly or in batch
По принцип, стига да имате достатъчно RAM, за да съхранявате вашите набори от резултати, трябва да можете да ги издърпате от курсорите и да ги задържите преди обработка. Това едва ли ще бъде значително по-бързо, но ще смекчи всяко забавяне специално на курсорите и ще ви освободи да обработвате данните си паралелно, ако сте настроени за това.