dic 查看CPU运行指令

dic 查看CPU运行指令

  • 只要没有出现 STORE_GLOBAL,那么数据基本是安全的

  • import dis
    a=0
    def func1():
        global a
        a+=1
    dis.dis(func1)
    '''
                  0 LOAD_GLOBAL              0 (a)     #在CPU中加载全局变量
                  2 LOAD_CONST               1 (1)     #在CPU中加载常量
                  4 INPLACE_ADD					   	   #得到计算后的值
                  6 STORE_GLOBAL             0 (a)     #对全局变量进行赋值(如果在此时进行了CPU切换,则会导致数据不安全)
                  8 LOAD_CONST               0 (None)  #重新加载常量
                 10 RETURN_VALUE                       #返回值
    '''
    
  • import dis
    a=[]
    def func1():
        a.append(1)
    
    dis.dis(func1)
    '''
                  0 LOAD_GLOBAL              0 (a)          #在CPU中加载全局变量
                  2 LOAD_ATTR                1 (append)     #在CPU中加载list属性
                  4 LOAD_CONST               1 (1)          #在CPU中加载常量
                  6 CALL_FUNCTION            1              #执行属性
                  8 POP_TOP							        #退出,并将值返回列表
                 10 LOAD_CONST               0 (None)       #在CPU中加载常量
                 12 RETURN_VALUE                            #返回值
    '''
    
posted @ 2021-07-02 00:52  刘家小仙女  阅读(65)  评论(0编辑  收藏  举报