单个进程的多线程会使用多个 CPU 吗?在 Python 线程中是真的吗? Java线程? C++线程?
最佳答案
在大多数语言(包括 Java 和 C++)中,每个线程可以同时在不同的内核上运行,从而(至少可能)在多核硬件上运行多个线程时显着加速。
然而,Python 是一个特例——至少在 CPython 中是这样。 (这是最常见的 Python 解释器)有一个 Global Interpreter Lock (又名 GIL),每个 Python 线程在执行 Python 字节码之前必须获得它。 GIL 是保持 Python 解释器状态一致所必需的,但是这个要求意味着即使你的 Python 进程中有多个线程,在任何给定的时刻只有一个线程会执行指令,这意味着你的 Python 程序将在多核硬件上运行时看不到任何性能提升/加速。该问题的唯一解决方法是:使用不同的语言,或使用不同的 Python 变体,或生成多个 Python 进程(每个 Python 进程将获得自己的解释器和自己的私有(private) GIL,因此它们都可以在平行线)。
关于multithreading - 只有多处理还是单个进程的多线程也使用多核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50770781/