不要依赖内置类型的原子性.
虽然Python的内置类型表面上有原子性, 但是在特定情形下可能打破原子性(例如用Python实现 __hash__
或 __eq__
的情况下). 因此它们的原子性不可靠. 你也不能臆测赋值是原子性的(因为赋值的原子性依赖于字典的原子性).
选择线程间的数据传递方式时, 应优先考虑 queue
模块的 Queue
数据类型. 如果不适用, 则使用 threading
模块及其提供的锁原语(locking primitives). 如果可行, 应该用条件变量和 threading.Condition
替代低级的锁.