Bon nombre d'opérations en Python sont thread-safe par défaut, donc un dictionnaire standard devrait être ok (au moins à certains égards). Ceci est principalement dû au GIL, qui aidera à éviter certains des problèmes de threading les plus sérieux.
Il y a une liste ici: http://coreygoldberg.blogspot.com/2008/09/python-thread-synchronization-and.html qui pourrait être utile.
Bien que la nature atomique de ces opérations signifie simplement que vous ne disposerez pas d'un état totalement incohérent si vous avez deux threads accédant à un dictionnaire en même temps. Donc, vous n'auriez pas une valeur corrompue. Cependant, vous ne pourriez pas (comme avec la plupart des programmes multi-threading) compter sur l'ordre spécifique de ces opérations atomiques.
Donc, pour couper une longue histoire courte ...
Si vous avez des exigences assez simples et ne sont pas pris la peine de l'ordre de ce qui se cache dans le écrit, vous pouvez utiliser un dictionnaire et de savoir que vous obtiendra toujours une valeur cohérente/non-corrompue (elle pourrait être périmée).
Si vous voulez vous assurer que les choses sont un peu plus cohérente en ce qui concerne la lecture et l'écriture, vous voudrez peut-être regarder la mémoire cache locale de Django:
http://code.djangoproject.com/browser/django/trunk/django/core/cache/backends/locmem.py
qui utilise une lecture/verrouillage d'écriture pour le verrouillage.
Vous devez indiquer qu'un cache local de thread ne partagera pas les objets entre les threads. –