多进程中 map 和 apply_async 是什么区别?

2020-06-13 11:06:22 +08:00
 oldbird

pool.map()

pool.apply_async()

pool.stop()

pool.join()

什么区别?

2468 次点击
所在节点    Python
3 条回复
lithbitren
2020-06-13 18:08:25 +08:00
map 放在进程池里并行计算,这个语句是阻塞的,apply_async 单个函数放进池里计算非阻塞的。
stop 没见过,join 是阻塞到所有 apply_async 产生的进程执行结束
oldbird
2020-06-14 03:43:11 +08:00
@lithbitren 谢谢,记错了,不是 stop,是 close
在使用 map 时,发现有的直接写到 pool.map()就可以了,有的还在后面加上 pool.close()、pool.join(),不知道这两种用法什么区别?
lithbitren
2020-06-14 19:31:24 +08:00
@oldbird 官方文档其实讲的都听清楚的,不写 close 一般是 map 放在 with 的块里面,块结束的时候会自动关闭,一般不用添加其他语句,apply_async 一般都不放块里,所以要手动关闭,关闭了以后才能 join

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/681193

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX