几个相关的概念说明:
GIL: Global Interpreter Lock,全局解释器锁。为了解决多线程之间数据完整性和状态同步的问题,设计为在任意时刻只有一个线程在解释器中运行。
线程:程序执行的最小单位。
进程:系统资源分配的最小单位。
线程安全:多线程环境中,共享数据同一时间只能有一个线程来操作。
原子操作:原子操作就是不会因为进程并发或者线程并发而导致被中断的操作。
重要结论:当对全局资源存在写操作时,如果不能保证写入过程的原子性,会出现脏读脏写的情况,即线程不安全。Python的GIL只能保证原子操作的线程安全,因此在多线程编程时我们需要通过加锁来保证线程安全。
最简单的锁是互斥锁(同步锁)
关于python中内建数据类型的示例
http://effbot.org/pyfaq/what-kinds-of-global-value-mutation-are-thread-safe.htm