gpt4 book ai didi

python - Python多久切换一次线程?

转载 作者:太空狗 更新时间:2023-10-30 02:09:53 25 4
gpt4 key购买 nike

在 cPython(默认的 Python 实现)中,线程切换多久发生一次?这不是关于使用多核的问题;我了解 GIL,并意识到一次只会运行一个线程。

我见过一些情况,我有两个顺序的日志消息,第一个日志消息将被发出,但第二个日志消息在几秒钟内没有发出。这可能是因为 Python 决定在两个日志语句之间切换线程。这让我相信 Python 每隔几秒就会在线程之间切换一次,这比我预期的要慢得多。这是正确的吗?

最佳答案

默认情况下,Python 2 将每 100 条指令切换一次线程。这可以通过此处记录的 sys.setcheckinterval 进行调整:https://docs.python.org/2/library/sys.html#sys.setcheckinterval

我在本演示文稿的第 10、11 和 12 页找到了更多信息:http://www.dabeaz.com/python/UnderstandingGIL.pdf

(这些答案来自问题的评论,但由于没有人将它们写在答案中,所以我将自己做。距离评论已经6个多月了。)

更新:

自 Python 3.2 起,sys.setcheckinterval 已弃用。 CPython 有另一种改进 GIL 的方法。他们没有在 100 条虚拟指令后释放 GIL,而是改为按时间间隔切换。

默认情况下,GIL 会在 5 毫秒(5000 微秒)后释放,以便其他线程可以有变化来获取 GIL。您可以使用 sys.setswitchinterval 更改此默认值

关于python - Python多久切换一次线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33225086/

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