Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 9, 2013 10:45:39

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

IPC, общие ресурсы для процессов

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



Отредактировано svas (Дек. 9, 2013 10:46:21)

Офлайн

#2 Дек. 9, 2013 17:57:53

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

IPC, общие ресурсы для процессов

Очереди же - RabbitMQ / Redis / Celery / …
Положил ресурс в очередь, один из ‘тасков’ его подобрал - и спокойно работает, остальные - ждут.

Офлайн

#3 Дек. 10, 2013 16:31:07

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

IPC, общие ресурсы для процессов

а когда “таск” закончил работать, положить его опять в очередь?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version