栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

多处理模块中的ThreadPool与Pool之间有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多处理模块中的ThreadPool与Pool之间有什么区别?

multiprocessing.pool.ThreadPool
行为一样
multiprocessing.Pool
,唯一的区别在于使用线程,而不是进程运行的工人逻辑。

你看到的原因

hi outside of main()

会被多次打印

multiprocessing.Pool
是由于该池将生成5个独立的进程。每个进程将初始化其自己的Python解释器并加载模块,从而导致
print
再次执行顶层。

请注意,仅当使用

spawn
进程创建方法时才会发生这种情况(Windows上仅此方法可用)。如果使用
fork
一个(Unix),则与线程一样,该消息仅打印一次。

multiprocessing.pool.ThreadPool
作为其实现从未完成未记录。它缺少测试和文档。您可以在源代码中看到其实现。

我相信下一个自然的问题是:何时使用基于线程的池,何时使用基于进程的池?

经验法则是:

  • IO绑定作业->
    multiprocessing.pool.ThreadPool
  • CPU绑定作业->
    multiprocessing.Pool
  • 混合作业->取决于工作量,
    multiprocessing.Pool
    由于流程隔离带来的优势,我通常更喜欢

在Python
3上,您可能需要看一下

concurrent.future.Executor
池的实现。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639949.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号