Sam*_*ena 3 python multiprocessing cpu-cores
如果运行一个 python 脚本,其中我使用多处理声明了 6 个进程,但我只有 4 个 CPU 核心,那么另外 2 个可以找到专用 CPU 核心的进程会发生什么情况。
#编辑 1 - 2021 年 1 月 21 日
我在我提出的问题中混淆了线程和进程。由于我对这个概念有了更清晰的了解,我将问题 2 改写如下(以供将来参考):
如果这两个额外的进程与现有 Core 中的另外两个进程并行运行,GIL 不会停止它们的执行吗?
Ans:GIL 不影响进程,GIL 一次只允许一个线程运行,但是对进程没有限制。系统调度程序管理另外两个进程如何在现有内核上运行。
小智 6
首先,你混淆了线程和进程:在Python中,只有线程而不是进程必须在其解释器上共享锁。如果您正在使用多处理库,那么您正在使用具有自己的解释器的 Python 进程。
当您使用 Python 进程时,它们的执行由操作系统调度程序管理,就像计算机中的所有其他进程一样。如果您的进程数多于 CPU 核心数,则额外的进程将在后台等待调度。当其他进程终止、等待 IO 或定期出现时钟中断时,通常会发生这种情况。
| 归档时间: |
|
| 查看次数: |
7533 次 |
| 最近记录: |