新的 pymongo2.6 允许跨多个线程分解进程。我觉得它非常有用。
from multiprocessing import Pool
import pymongo
connection = pymongo.MongoClient(max_pool_size=8)
def update(id):
connection.update({"_id":id},{"$set":{"field":"blah_blah"}},upsert=True)
p = Pool(8)
p.map(update,list_of_ids)
这很好用。但是,我想知道是否可以分解查询集合?我知道游标对象已经被分割成块,所以无论如何使用线程并发来加速查询?
就像是...
list_of_ids = []
def get_ids(chunk_of_cursor):
for i in chunk_of_cursor:
list_of_ids.append(i['_id'])
p = Pool(8)
p.map(get_ids,connection.find({"field":"somecriteria"})
无论如何,将光标对象作为块传递给函数。
Ĵ