【发布时间】:2021-01-20 13:57:26
【问题描述】:
如果运行一个 python 脚本,其中我声明了 6 个使用多处理的进程,但我只有 4 个 CPU 内核,那么可以找到专用 CPU 内核的额外 2 个进程会发生什么。
- 他们是如何被处决的?
- 如果两个额外的进程在现有核心上作为单独的线程运行,GIL 不会停止它们的执行吗?
#编辑 2021 年 1 月 1 日至 21 日
我在我提出的问题中混淆了线程和进程。由于我对这个概念有更清晰的认识,我将问题 2 改写如下(供将来参考):
如果这两个额外的进程与现有核心中的其他两个进程并行运行,GIL 不会停止它们的执行吗?
Ans: GIL 不影响进程,GIL 一次只允许一个线程运行,但是对进程没有限制。系统调度程序管理额外的两个进程如何在现有内核上运行。
【问题讨论】:
-
第一个问题:是的,多处理通过不同的内核拆分任务。然而,这些核心已经被用来处理任务,并将更多的放在使用较少的核心上。
multiprocessing遵循一个系统,系统可以随时停止任务(如果出现其他任务)。但是,当有很多任务时,这可能会导致性能下降。 -
有道理。谢谢。
标签: python multiprocessing cpu-cores