GIL 保证的 Thread-safe 是在 Bytecode 层而不是 Python Code。所以能确保的是每行 Bytecode 都会被运行完成,而多行 Bytecode 是则有被中断切换执行的可能性。

原子操作

  1. 读取/覆盖一个单变量
  2. 读取/覆盖一个全局变量
  3. 从list拿到一个元素
  4. 更新list的一个元素(例如: list.append())
  5. 从dictionary中获取一个元素
  6. 更新dictionary的一个元素

参考文章