【发布时间】:2015-11-11 00:10:43
【问题描述】:
我有一个包含具有字段的文档的集合,称之为field1,我想在每个field1 条目上调用一个(复杂的)python 函数fxn,并将其存储在一个新的field2 中。我的集合非常大,fxn 需要几秒钟才能运行,所以我想在几个作业中并行处理。到目前为止,这是我的方法:
for i, entry in enumerate(collection.find().sort('_id')):
if i % nJobs != jobID: continue
field1 = entry['field1']
field2 = fxn(field1)
collection.update({'_id': entry['_id']}, {'$set': {'field2':field2})
其中nJobs 是作业总数,jobID 是当前作业的索引(例如,假设我并行运行此脚本 5 次,则 nJobs=5 和 jobID 的范围为 0 到 4)
有没有更快或更可靠的方法来实现这一点?我宁愿把所有东西都保存在 python 中,因为fxn 需要保存在 python 中。
【问题讨论】: