Доброго времени суток.
Есть некий контейнер в который сохраняются объекты по id, предположим {}

t={}

Есть 50 потоков (Threads) которые читают, не важно, одинаковые или разные id.
Есть 5 конкурирующих потоков с локом которые пишут новые id в контейнер.

t ['ABC' ]={'test_value1':1,'test_value2':2}

Безопасно ли остальным 50 потокам выполнять во время лока чтение? Я так полагаю что нет.
Как в таком случае быть? Вариант принудительным ожиданием и проверкой лока ( if not lock.locked() ) в каждом из потоков попахивает костылем.

Пишу на 2.7, фреймворк Tornado