【发布时间】:2018-10-04 05:50:12
【问题描述】:
假设我在多核 CPU(比如 4)上运行多个 python 进程(不是线程)。 GIL 是进程级别的,因此特定进程中的 GIL 不会影响其他进程。
我的问题是,一个进程中的 GIL 是只占用 4 个核心中的一个核心,还是会占用所有 4 个核心?
如果一个进程同时锁定所有内核,那么多处理应该不会比 python 中的多线程更好。如果不是,内核如何分配给各个进程?
作为观察,在我的系统中,它是 8 个核心(4*2,因为 超线程),当我运行单个 CPU 绑定进程时,CPU 使用率 8 个内核中有 4 个上升。
简化:
在 4 核 CPU 上运行的 4 个 python 线程(在一个进程中)将比执行相同工作的单个线程花费更多时间(考虑到该工作完全受 CPU 限制)。 4 个不同的流程做这么多的工作是否会减少将近 4 倍的时间?
【问题讨论】:
标签: python multiprocessing gil