线程

不要依赖内置类型的原子性.

虽然Python的内置类型表面上有原子性, 但是在特定情形下可能打破原子性(例如用Python实现 __hash____eq__ 的情况下). 因此它们的原子性不可靠. 你也不能臆测赋值是原子性的(因为赋值的原子性依赖于字典的原子性).

选择线程间的数据传递方式时, 应优先考虑 queue 模块的 Queue 数据类型. 如果不适用, 则使用 threading 模块及其提供的锁原语(locking primitives). 如果可行, 应该用条件变量和 threading.Condition 替代低级的锁.