gpt4 book ai didi

Python GIL 防止 CPU 使用率在多核机器中超过 100%?

转载 作者:行者123 更新时间:2023-11-28 18:33:04 34 4
gpt4 key购买 nike

许多引用资料说,Python GIL 降低了多核机器中多线程代码的性能,因为每个线程在执行前都需要获取 GIL。

换句话说,看起来GIL把一个多线程的Python程序实际上变成了单线程模式。

例如:

(1)线程A获取GIL,执行一段时间,释放GIL

(2)线程B获得GIL,执行一段时间,释放GIL

...

但是,经过一些简单的实验,我发现虽然GIL降低了性能,但在多核机器上总的CPU使用率可能会超过100%。

from threading import Thread

def test():
while 1:
pass

for i in range(4):
t = Thread(target=test)
t.start()

在4核8线程的机器上,上述程序会占用160%左右的CPU使用率。我有什么误解吗?两个线程可以完全同时执行?或者 CPU 使用率计算 有偏差或有问题?

谢谢

最佳答案

除了Dolda2000答案是,Python 字节码一次只能由一个处理器执行,因为有 GIL。只有某些 C 模块(不管理 Python 状态)能够并发运行。

线程更适合 I/O 密集型应用程序(I/O 释放 GIL,允许更多并发)在其他情况下,python 多线程比串行更慢并且性能下降。因此,要利用所有内核并获得更好的性能,请使用多处理。在 this 中有一个很好的解释回答,检查一下!

关于Python GIL 防止 CPU 使用率在多核机器中超过 100%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35081783/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com