dis 查看字节码
虽说GIL保证了同一时刻只有一个线程在工作,
但是不能保证对同一变量的操作是原子操作,因此需要枷锁
原子操作:一个字节码所能完成的操作。
import dis l = [0] def foo(): l[0] = 1 print(dis.dis(foo)) ''' 7 0 LOAD_CONST 1 (1) 2 LOAD_GLOBAL 0 (l) 4 LOAD_CONST 2 (0) 6 STORE_SUBSCR # 2个字节码操作,可能在线程执行过程中切换到其他线程 8 LOAD_CONST 0 (None) 10 RETURN_VALUE None '''