gpt4 book ai didi

python - 在有 GIL 的情况下,您可以在 Python 中竞争条件吗?

转载 作者:太空狗 更新时间:2023-10-29 21:34:28 24 4
gpt4 key购买 nike

我的理解是,由于 cPython 中的全局解释器锁 (GIL),任何时候只能执行一个线程。这是否会自动防止竞争条件,例如丢失更新问题?

最佳答案

由于 GIL,每个进程只有一个线程处于事件状态以执行 Python 字节码;字节码评估循环受其保护。

锁每隔sys.getswitchinterval()释放一次秒,此时可以进行线程切换。这意味着对于 Python 代码,线程切换仍然可以发生,但只能在字节代码指令之间进行。任何依赖线程安全的代码都需要考虑到这一点。可以在一个字节码中完成的操作可以是线程安全的,其他一切都不是。

即使是单字节代码指令也可以触发其他Python代码;例如,行 object[index] 可以触发对自定义类的 __getitem__ 调用,该自定义类是用 Python 实现的。因此,单个 BINARY_SUBSCR 操作码不一定是线程安全的,具体取决于对象类型。

关于python - 在有 GIL 的情况下,您可以在 Python 中竞争条件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23855138/

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