[Python-Dev] FYI dict lookup now raises a RuntimeError if the dict is modified during the lookup (original) (raw)

Victor Stinner victor.stinner at gmail.com
Fri Mar 9 13:48:35 CET 2012


If you use your own comparaison function (eq) for objects used as dict keys, you may now get RuntimeError with Python 3.3 if the dict is modified during a dict lookup in a multithreaded application. You should use a lock on the dict to avoid this exception.

Said differently, a dict lookup is not atomic if you use your own types as dict keys and these types implement eq.

In Python < 3.3, the dict lookup is retried until the dict is no more modified during the lookup, which leads to a stack overflow crash if the dict is always modified.

See the issue #14205 for the rationale.

Victor



More information about the Python-Dev mailing list