一个在 GIL 下的双核机器上产生两个线程的进程
One process which spawns two threads on a Two-Cores Machine under GIL
假设我有一个进程在双核机器上生成两个线程。
由于 GIL,
是否有可能线程 1 绑定到 Core1 而线程 2 绑定到 Core2,因此它们正在等待获得不同的锁 CPU。
或者所有线程不断地绑定到一个特定的 CPU,(即使在 100 核机器上产生 100 个线程)。
默认情况下,线程未绑定到任何 CPU -- 当线程准备就绪时-运行,OS 将动态地将其分派到 运行在可用核心上使用 OS 选择的算法。
但是,由于 GIL 是全局的,因此在给定的 Python 进程中只有一个线程可以在任何给定时间执行 Python 字节码。该进程中的任何其他线程都将被阻塞,等待获取 GIL,因此根本不会与任何核心关联。
假设我有一个进程在双核机器上生成两个线程。
由于 GIL,
是否有可能线程 1 绑定到 Core1 而线程 2 绑定到 Core2,因此它们正在等待获得不同的锁 CPU。
或者所有线程不断地绑定到一个特定的 CPU,(即使在 100 核机器上产生 100 个线程)。
默认情况下,线程未绑定到任何 CPU -- 当线程准备就绪时-运行,OS 将动态地将其分派到 运行在可用核心上使用 OS 选择的算法。
但是,由于 GIL 是全局的,因此在给定的 Python 进程中只有一个线程可以在任何给定时间执行 Python 字节码。该进程中的任何其他线程都将被阻塞,等待获取 GIL,因此根本不会与任何核心关联。