Как настроить блокировку только для некоторых потоков?

У меня есть некоторый код, который должен быть залочен только для некоторых потоков

name = order.id
lock = Lock()

with lock:
    change_order()

Вся суть в том, что функция change_order должна лочиться только для потоков у которых выходит такое же имя заказа name = order.id, если имя другое то код не должен лоччиться для потока. Так, если поток с заказом 1 выполняет change_order(), то это никак не должно мешать выполнять change_order() потоку с заказом 2, но если еще один поток будет тоже иметь заказ 1, то change_order() для него должен быть залочен, пока первый поток его не выполнит. Можно ли это реализовать методами lock, как то присваивая это им внутри, или придется пилить собственные костыли?


Ответы (0 шт):