Здравствуйте. Стоит следующая задача: есть несколько процессов (допустим process1, process2, process3) и ограниченное кол-во “абстрактных ресурсов” (resource1, resource2). В один момент времени, ресурс может быть занят только одним процессом. Т.е. алгоритм процесса примерно следующий: проверить все ресурсы, заблокированы они или нет. Если есть не заблокированный ресурс, заблокировать его и работать с ним, если нет - ждать пока освободится. После работы разблокировать ресурс. На ум приходят несколько вариантов:
1) RabbitMQ или что-то подобное - знаю, что используется в celery как очередь задач, как организовать взаимодействие с блокированием/разблокированием пока не пойму
2) Использовать модуль multiprocessing. Тоже пока не пойму как использовать разделяемую память, или семафор, или еще что-нибудь. Процессы разные (т.е. я не запускаю их с помощью модуля multiprocessing, они живут отдельно друг от друга, и даже код у них разный)
3) Ипользовать стандартный unix ipc.
Может есть какой-нибудь готовый вариант, подходящий для меня?