gpt4 book ai didi

python多线程性能

转载 作者:行者123 更新时间:2023-11-28 22:41:36 29 4
gpt4 key购买 nike

我有一台有 10 个 cpu 内核的服务器,当我运行以下代码时其中一个线程,其中一个 cpu 内核使用率为 100%:

def fun():
while 1:
pass

但是当我使用 5 个线程运行相同的代码时,有 5 个 cpu 核心使用率分别为:30%、20%、15%、25%、12%。

为什么不是 5 个 CPU 内核分别具有 100% 的使用率?如果多个 python 线程不能充分利用 CPU,那么多线程应该如何比一个线程快?

最佳答案

您描述的是典型的瓶颈,当更多内核尝试访问单个锁时,瓶颈会变得更加明显。正如 mgilson 所提到的,这是存在于许多 Python 实现中的 GIL 的副作用。 Python 中的 GIL 保证一次只有一个线程执行 Python 字节码。这是出于历史原因。但正如 Roland 在评论中也提到的那样,GIL 使例如垃圾收集器的调试更容易。尽管有像 IronPython 这样没有 GIL 的实现。

Python 2 和 Python 3 在线程获取 GIL 的方式上有不同的方法。

python 2:http://www.dabeaz.com/python/GIL.pdf

python 3:http://www.dabeaz.com/python/NewGIL.pdf

一种解决方案是生成独立的 Python 解释器。它们作为单独的进程工作,可以完成自己的工作。 multiprocessing 模块可以在这方面为您提供帮助。

关于python多线程性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419202/

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