Ich habe ein Wörterbuch, das von einem Thread aktualisiert wird, und in einem anderen Thread möchte ich über seine Werte zu iterieren. Normalerweise würde ich eine Sperre verwenden, aber dieser Code ist sehr leistungskritisch, und ich möchte das wenn möglich vermeiden.
Eine Besonderheit meines Falles ist, dass ich mich nicht um die absolute Korrektheit des Iterators kümmere; wenn er Einträge übersieht, die nach Beginn der Iteration entfernt wurden, oder solche aufnimmt, die später hinzugefügt wurden, ist das in Ordnung. Ich verlange nur, dass er keine Ausnahme wie "Wörterbuchgröße während der Iteration geändert" auslöst.
Gibt es angesichts dieser lockeren Korrektheitsbeschränkung einen effizienten Weg, das Wörterbuch zu iterieren, ohne eine Sperre zu verwenden?
Anmerkung: Ich bin mir bewusst, dass keys()
ist in Python 2.x thread-sicher, aber da sich dieses Verhalten in 3.x geändert hat, möchte ich es vermeiden.