将作业映射到流程有四种选择。您必须考虑多个参数,并发性,阻塞和排序。
map并且
map_async仅在阻止方面有所不同。
map_async是非阻塞其中作为
map阻止
假设您有一个功能
from multiprocessing import Poolimport timedef f(x): print x*xif __name__ == '__main__': pool = Pool(processes=4) pool.map(f, range(10)) r = pool.map_async(f, range(10)) # DO STUFF print 'HERE' print 'MORE' r.wait() print 'DONE'
输出示例:
01941625364964810HERE14MORE1625369496481DONE
pool.map(f, range(10))将等待所有10个这些函数调用完成,因此我们可以连续查看所有打印件。
r =pool.map_async(f,range(10))将异步执行它们,只有块时
r.wait()被调用,所以我们看到的
HERE和
MORE在两者之间,但
DONE总是会在最后。



