【发布时间】:2018-11-26 12:01:25
【问题描述】:
假设我有一个代码,使用多处理返回给我一个包含 200000 个项目的列表,这些项目是它们自己的列表(在标记为第 1 点的代码中)。如果我只需要一个包含内部项目的列表,我会再次迭代收到的列表(在标记为第 2 点的代码中)。
问题:标记为点 2 的线不能并行工作,因此需要宝贵的时间。有没有办法将函数cu中的所有数据直接写入doc?
def cu(num):
return range(num)
pool = mp.Pool(processes=384)
results = [pool.apply_async(cu, args=(20, )) for ind in range(200000)]
docs = [p.get() for p in results] # point 1
docs = [point for item in docs for point in item] # point 2
pool.close()
pool.join()
我怀疑用多处理代替多线程会解决这个问题,但我担心它不会节省时间。
注意:这是一个最小的例子。
【问题讨论】:
-
顺便说一句,我不建议使用
384进程,只是你的计算机拥有的 CPU 内核数(但也许你在超级服务器上运行它)
标签: python multithreading python-2.7 multiprocessing