Найти - Пользователи
Полная версия: IPC, общие ресурсы для процессов
Начало » Python для новичков » IPC, общие ресурсы для процессов
1
svas
Здравствуйте. Стоит следующая задача: есть несколько процессов (допустим process1, process2, process3) и ограниченное кол-во “абстрактных ресурсов” (resource1, resource2). В один момент времени, ресурс может быть занят только одним процессом. Т.е. алгоритм процесса примерно следующий: проверить все ресурсы, заблокированы они или нет. Если есть не заблокированный ресурс, заблокировать его и работать с ним, если нет - ждать пока освободится. После работы разблокировать ресурс. На ум приходят несколько вариантов:
1) RabbitMQ или что-то подобное - знаю, что используется в celery как очередь задач, как организовать взаимодействие с блокированием/разблокированием пока не пойму
2) Использовать модуль multiprocessing. Тоже пока не пойму как использовать разделяемую память, или семафор, или еще что-нибудь. Процессы разные (т.е. я не запускаю их с помощью модуля multiprocessing, они живут отдельно друг от друга, и даже код у них разный)
3) Ипользовать стандартный unix ipc.
Может есть какой-нибудь готовый вариант, подходящий для меня?
s0rg
Очереди же - RabbitMQ / Redis / Celery / …
Положил ресурс в очередь, один из ‘тасков’ его подобрал - и спокойно работает, остальные - ждут.
svas
а когда “таск” закончил работать, положить его опять в очередь?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB