首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于python中多处理原理的几个问题

关于python中多处理原理的几个问题
EN

Stack Overflow用户
提问于 2019-06-21 19:41:53
回答 1查看 83关注 0票数 0

关于python中的多处理原理,我有一个简短的问题。例如,如果有35个具有24个进程的任务,那么多处理是如何工作的?哪一个是对的?

35项任务中有35项由24个核心执行。

首先,35项任务中有24项由24个核心运行。在完成24项工作后,其余的35项任务( 11项)由11个核心运行。

如果B是对的,我怎么能在多处理中总是使用24个核呢?

代码语言:javascript
复制
if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=24)
    test_list = [sub_1, sub_2, sub_3, sub_4, ..., sub_35]
    results = pool.map(labeling, test_list)
    pool.close()
    pool.join()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-21 20:00:45

Python本身的任务调度是FIFO,所以一旦提交了所有任务,就由内核在池中的进程之间进行调度。多进程将进程调度的任务留给操作系统内核。

所以这比那要复杂一些。根据操作系统的决定,进程可能会以多种方式进行调度。通常,OS内核在调度进程以最大限度地利用CPU方面很聪明。因此,如果您有24个核心,以及一个由24个进程组成的池,您可以期望您的CPU得到最佳的利用--但这当然将取决于您的任务实际执行的是什么。

因此,一旦您将所有任务提交到池中:

  • 前24项任务将由24个进程负责。
  • 这些任务一直运行到完成(这取决于内核如何调度进程)
  • 一旦处理完任务,就会向它提交一个新的任务。这种情况将一直发生,直到提交的任务全部完成为止。

了解CPU使用效率的最佳方法是监视CPU的使用情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56709536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档