首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python变量赋值是原子的吗?

python变量赋值是原子的吗?
EN

Stack Overflow用户
提问于 2018-03-15 05:19:44
回答 2查看 0关注 0票数 0

假设我使用的是signal处理间歇计时器的处理程序。

代码语言:txt
复制
def _aHandler(signum, _):
  global SomeGlobalVariable
  SomeGlobalVariable=True

我能设置SomeGlobalVariable不用担心,在不太可能的情况下SomeGlobalVariable(即PythonVM正在执行字节码来设置变量),信号处理程序中的赋值会破坏什么?元稳定州)

更新::我特别感兴趣的是“复合转让”是在处理程序之外进行的。

(也许我想的是“低层次”,这都是在Python中处理的...来自嵌入式系统背景,我不时会有这样的冲动)

EN

回答 2

Stack Overflow用户

发布于 2018-03-15 14:17:48

简单变量的简单赋值是“原子”AKA线程安全(复合赋值,如+=或者不需要为对象的项或属性分配,但是您的示例是一个简单的赋值,尽管是全局变量,因此是安全的)。

票数 0
EN

Stack Overflow用户

发布于 2018-03-15 14:37:10

复合作业包括三个步骤:读-更新-写。如果另一个线程在读取发生后,但在写入之前,运行另一个线程并将一个新值写入位置,则这是一个争用条件。在这种情况下,一个陈旧的值正在被更新并写回,这将打击其他线程编写的任何新值。在Python中,任何涉及执行单个字节代码的内容都应该是原子的,但是复合赋值不符合这个条件。用锁。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档