python - Python变量赋值是原子的吗?

标签 python signals

假设我正在使用 signal 处理程序来处理间隔计时器。

def _aHandler(signum, _):
  global SomeGlobalVariable
  SomeGlobalVariable=True

我可以设置 SomeGlobalVariable 而不必担心,在不太可能的情况下,在设置 SomeGlobalVariable(即 Python VM 正在执行字节码来设置变量)时,分配信号处理程序内会破坏什么? (即元稳定状态)

更新:我对在处理程序之外进行“复合分配”的情况特别感兴趣。

(也许我想的太“低级”了,这一切都在 Python 中处理了......来自嵌入式系统背景,我不时有这种冲动)

最佳答案

对简单变量的简单赋值是“原子的”AKA threadsafe(复合赋值,如 += 或对项目或对象属性的赋值不需要,但您的示例是对简单变量的简单赋值,尽管是全局的、可变的,因此是安全的)。

关于python - Python变量赋值是原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291069/

相关文章:

python - 如何从python中的unittest导入一个类?

python - 如何将 numpy 数组以字符串形式写入文件?

在 C 程序中捕获 Ctrl+C

matlab - Matlab:如何将信号降低到音频噪声

Go:获取信号来源

python - Pygame:物体从墙上反弹几次,然后就再也不会了

python - 在python中获取每个2个字母的单词的第一个字母

python - NetworkX图: creating nodes with ordered list

c - 当一个进程调用 sleep 函数时,它会发出信号吗?

c++ - Qt QAxWidget - WebBrowser 手动设置插槽/信号