单个进程的多线程会使用多个CPU吗?在Python线程中是真的吗? Java线程? C ++线程化?
答案 0 :(得分:0)
在大多数语言(包括Java和C ++)中,每个线程可以同时在不同的内核上运行,在多核硬件上运行多个线程时允许(至少可能)显着的加速。
Python是一个特例,但至少在CPython(这是最常见的Python解释器)中,每个Python线程必须先获取Global Interpreter Lock(又名GIL)才能获得执行Python字节码。 GIL对于保持Python解释器的状态一致是必要的,但是这个要求意味着即使你的Python进程中存在多个线程,这些线程中只有一个会在任何给定的瞬间执行指令,这意味着你的Python程序将会在多核硬件上运行时看不到任何性能提升/加速。该问题的唯一解决方法是:使用不同的语言,或使用不同的Python变体,或者生成多个Python进程(每个Python进程将使用自己的私有GIL获得自己的解释器,因此它们都可以执行平行)。