gpt4 book ai didi

python - 自 Python3.2 以来,GIL 实现变得更糟了吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:02 49 4
gpt4 key购买 nike

我已经阅读了有关 GIL 的精彩介绍: http://www.dabeaz.com/python/UnderstandingGIL.pdf

Dave 在这里说,自从 Python3.2 以来,我们有了新的更好的 GIL 版本,并提供了证明这一点的示例(在幻灯片 54 上)。

但是当我自己在 Python 3.4 上测试它们时,性能似乎更差:

from threading import Thread

def count(n):
while n > 0:
n -= 1

def sequential_test():
count(100000000)
count(100000000)

def threaded_test():
t1 = Thread(target=count,args=(100000000,))
t1.start()
t2 = Thread(target=count,args=(100000000,))
t2.start()
t1.join()
t2.join()

所以在我的 Linux 双核笔记本电脑上在 Python 2.7 中我得到:

sequential_test: 11s
threaded_test: 17s

在 Python 3.4 中我得到:

sequential_test: 18s
threaded_test: 28s

所以问题是,为什么在 Python 3.4 中,在这两种情况下,代码运行速度都较慢,以及为什么与 Python2 相比,我没有看到 GIL 在两个受 CPU 限制的进程上有任何改进?

可能是我做错了什么?

我的猜测是,在 Python2 中,对此类代码进行了一些 C 代码优化,这就是它运行速度更快的原因,但我对此一无所知

最佳答案

我测试了这个循环:

    for (i=0; i<loops; i++)
{
Py_BEGIN_ALLOW_THREADS
Py_END_ALLOW_THREADS
}

在 Centos 7、i7-2600 上循环设置为 10,000,000

python 2.7真实的 0m0.199s用户 0m0.109s系统 0m0.011s

python 3.7真正的 0m0.912s用户 0m0.791s系统 0m0.009s

2.7 快了将近 8 倍(CPU 时间)

关于python - 自 Python3.2 以来,GIL 实现变得更糟了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36117773/

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