2017-01-25 18 views
0

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

Мне нужно сделать это, поскольку я имитирую технику обслуживания как процессы, а ресурсы, представляющие общие объекты, доступны для проведения технического обслуживания. В некоторых мероприятиях по техническому обслуживанию может использоваться только один тип объектов, но другие операции по обслуживанию более гибкие и имеют возможность использовать несколько типов объектов.

Таким образом, в терминах SimPy один процесс имеет возможность выбора одного уникального типа ресурса, но другие процессы могут выбирать из нескольких уникальных типов ресурсов.

Сырая объяснение того, что я пытаюсь достичь:

resource_A_req = resource_A.request() 

resource_B_req = resource_B.request() 

yield resource_A_req or resource_B_req 

Would научиться использовать FilterStore быть ответом на мой вопрос?

ответ

1

yield resource_A_req | resource_B_req может работать для вас. Затем вам нужно проверить, какой запрос был успешным, и вызвать cancel() на другом, чтобы избежать проблем (поиск документов для «событий условий»).

FilterStore может работать, тоже. См. this answer для краткого примера.

+0

Спасибо Stefan. Я пробовал FilterStore с успехом! Я попробую использовать первый предложенный вами метод. – bobo