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