您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

有GIL时,你可以在Python中竞争条件吗?

5b51 2022/1/14 8:23:06 python 字数 1648 阅读 570 来源 www.jb51.cc/python

我的理解是,由于c Python中的Global Interpreter Lock,任何时候都只能执行一个线程.这是否会自动保护免受竞争条件的影响,例如丢失的更新问题? 为了清楚起见,我从理论的角度提问.没有同步,我永远不会编写线程代码. 由于GIL,每个进程只有一个线程处于活动状态以执行Python字节码;字节码评估循环受其保护. 每sys.getcheckinterval()字节代码释放一次锁

概述

为了清楚起见,我从理论的角度提问.没有同步,我永远不会编写线程代码.

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

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

总结

以上是编程之家为你收集整理的有GIL时,你可以在Python中竞争条件吗?全部内容,希望文章能够帮你解决有GIL时,你可以在Python中竞争条件吗?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶