python dis模块

python中的dis模块可以查看一句python代码的cpu运行轨迹,也就是cpu指令,
如果只是读取数据时,如读取一个函数,此时数据是安全的,因为没有涉及任何修改,
当改数据时,可能会涉及数据不安全,如多个线程同时修改一个数据,原因是一句代码对应了多条cpu指令,如有4条指令,当执行完第二条时,cpu时间片轮转了,此时数据可能发生错误。
所以任何 += -= *- 都是数据不安全的

  • 没有存进去,只有load读数据,安全
import dis
def func2():
    a = 0
    a + 1
dis.dis(func2)

运行结果

  3           0 LOAD_CONST               1 (0)
              2 STORE_FAST               0 (a)

  4           4 LOAD_FAST                0 (a)
              6 LOAD_CONST               2 (1)
              8 BINARY_ADD
             10 POP_TOP
             12 LOAD_CONST               0 (None)
             14 RETURN_VALUE
  • 数据存进去,数据不安全
import dis
def func2():
    a = 0
    a += 1
dis.dis(func2)

运行结果

  3           0 LOAD_CONST               1 (0)
              2 STORE_FAST               0 (a)   

  4           4 LOAD_CONST               2 (1)
              6 STORE_FAST               0 (a)
              8 LOAD_CONST               0 (None)
             10 RETURN_VALUE
以上涉及cpu多步指令

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值