是只有多处理还是单个进程的多线程也会使用多核?



单个进程的多线程会利用多个CPU吗?在 Python 线程中是这样吗?Java 线程?C++线程?

在大多数语言(包括Java和C++(中,每个线程可以同时在不同的内核上运行,当在多核硬件上运行多个线程时,允许(至少潜在地(显着加速。

然而,Python是一个特例 - 至少在CPython(这是最常见的Python解释器(中有一个全局解释器锁(又名GIL(,每个Python线程在执行Python字节码之前必须获取它。 GIL 对于保持 Python 解释器的状态一致性是必要的,但这一要求意味着即使您的 Python 进程中存在多个线程,在任何给定时刻也只有一个线程会执行指令,这意味着您的 Python 程序在多核硬件上运行时不会看到任何性能提升/加速。 该问题的唯一解决方法是:使用不同的语言,或使用不同的 Python 变体,或者生成多个 Python 进程(每个 Python 进程将获得自己的解释器及其自己的私有 GIL,因此它们可以并行执行(。

相关内容

  • 没有找到相关文章

最新更新