【发布时间】:2015-02-13 06:20:20
【问题描述】:
我正在处理一些 ascii 数据,进行一些操作,然后将所有内容写回另一个文件(工作由 post_processing_0.main 完成,不返回任何内容)。我想用多处理模块并行化代码,见下面代码sn-p:
from multiprocessing import Pool
import post_processing_0
def chunks(lst,n):
return [ lst[i::n] for i in xrange(n) ]
def main():
pool = Pool(processes=proc_num)
P={}
for i in range(0,proc_num):
P['process_'+str(i)]=pool.apply_async(post_processing_0.main, [split_list[i]])
pool.close()
pool.join()
proc_num=8
timesteps=100
list_to_do=range(0,timesteps)
split_list=chunks(list_to_do,proc_num)
main()
我阅读了map和async之间的区别,但我不是很理解。我对多处理模块的应用是否正确?
在这种情况下,我应该使用 map_async 还是 apply_async?为什么?
编辑:
我不认为这是问题Python multiprocessing.Pool: when to use apply, apply_async or map? 的重复。在问题中,答案集中在使用这两个函数可以获得的结果的顺序上。这里我问:什么都不返回有什么区别?
【问题讨论】:
-
我读了那个问题,但它并没有消除我的疑虑。我在问一个更严格的问题:在这种情况下,没有返回并行函数的结果,有什么区别?