2024-04-26 05:06:55 发布
网友
使用map和map_async有什么区别?将列表中的项目分配到4个进程后,它们是否运行相同的函数
map
map_async
那么,假设两者都是异步运行和并行运行是错误的吗
def f(x): return 2*x p=Pool(4) l=[1,2,3,4] out1=p.map(f,l) #vs out2=p.map_async(f,l)
将作业映射到流程有四种选择。必须考虑多个ARG、并发、阻塞和排序。{}和map_async仅在阻塞方面不同map_async是非阻塞的,其中asmap是阻塞的
假设你有一个函数
from multiprocessing import Pool import time def f(x): print x*x if __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'
示例输出:
0 1 9 4 16 25 36 49 64 81 0 HERE 1 4 MORE 16 25 36 9 49 64 81 DONE
pool.map(f, range(10))将等待所有10个函数调用完成,以便我们看到一行中的所有打印。 r = pool.map_async(f, range(10))将异步执行它们,并且只有在调用r.wait()时才会执行块,因此我们可以看到HERE和MORE介于两者之间,但DONE始终位于末尾
pool.map(f, range(10))
r = pool.map_async(f, range(10))
r.wait()
HERE
MORE
DONE
将作业映射到流程有四种选择。必须考虑多个ARG、并发、阻塞和排序。{}和
map_async
仅在阻塞方面不同map_async
是非阻塞的,其中asmap
是阻塞的假设你有一个函数
示例输出:
pool.map(f, range(10))
将等待所有10个函数调用完成,以便我们看到一行中的所有打印。r = pool.map_async(f, range(10))
将异步执行它们,并且只有在调用r.wait()
时才会执行块,因此我们可以看到HERE
和MORE
介于两者之间,但DONE
始终位于末尾相关问题 更多 >
编程相关推荐