多核多线程比单核多线程比单核多线程更差。多核多进程下,CPU1释放GIL后,其他CPU上的线程都会进行竞争,但GIL可能会马上又被CPU1拿到,CPU2释放GIL后……,导致其他几个CPU上被唤醒后的线程会醒着等待到切换时间后又进入待调度状态,这样会造成线程颠簸(thrashing),导致效率更低。
可以看下本人头条号文章《鸡肋?Python中的多线程与多进程那些事》,对这有较详细的说明。
多核多线程比单核多线程比单核多线程更差。多核多进程下,CPU1释放GIL后,其他CPU上的线程都会进行竞争,但GIL可能会马上又被CPU1拿到,CPU2释放GIL后……,导致其他几个CPU上被唤醒后的线程会醒着等待到切换时间后又进入待调度状态,这样会造成线程颠簸(thrashing),导致效率更低。
可以看下本人头条号文章《鸡肋?Python中的多线程与多进程那些事》,对这有较详细的说明。