我可以以某种方式加快处理速度以获得更多内存使用吗?
def dowork(args):
uid = int(args.get('uid'))
if map_userid_visits.get(uid):
map_userid_visits[uid] += 1
else:
map_userid_visits[uid] = 1
def main():
manager = Manager()
map_userid_visits = manager.dict()
start_time = time.time()
print ('Start Time', start_time)
cur = cursor.Cursor(mycollection)
pool = multiprocessing.Pool(CONFIG_POOL_SIZE)
iteration = 0
for user_event in cur:
pool.apply(dowork, (user_event, ))
pool.close()
pool.join()
print map_userid_visits
答案 0 :(得分:0)
您的方法无法扩展。主要问题是您一次只能发送一行,这样您就可以进行非常轻量级的操作。这意味着序列化的开销比工作本身要大得多。
也来自multiprocessing documentation:
apply(func[, args[, kwds]])¶
使用参数args和关键字参数kwds调用func。 它会阻塞直到结果准备就绪。给定此块,apply_async()更适合于并行执行工作。此外,func仅在池的工作程序之一中执行。