Avez-vous envisagé une approche telle que :
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
Alternativement, quelque chose comme :
# 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
Fondamentalement, tant que vous disposez de suffisamment de RAM pour stocker vos ensembles de résultats, vous devriez pouvoir les retirer des curseurs et les conserver avant le traitement. Ce ne sera probablement pas beaucoup plus rapide, mais cela atténuera tout ralentissement spécifique des curseurs et vous permettra de traiter vos données en parallèle si vous êtes configuré pour cela.