我有一个由一个线程更新的字典,在另一个线程中我想迭代它的值。通常我会使用锁,但这段代码对性能非常关键,如果可能的话,我想避免这种情况。
我的案例的一个特点是我不关心迭代器的绝对正确性。如果它错过了迭代开始后删除的条目,或者捡起了之后添加的条目,那很好。我只要求它不会引发任何类型的“迭代期间更改的字典大小”异常。
鉴于对正确性的这种宽松约束,是否有一种有效的方法可以在不使用锁的情况下迭代字典?
注意:我知道这keys()
在 Python 2.x 中是线程安全的,但由于这种行为在 3.x 中发生了变化,我想避免它。