Получение параметра сигнала события в simpy

Я использую SimPy для моделирования на основе времени.

У меня есть процесс Messager, который прослушивает определенное событие и возвращает параметры этого события, когда оно происходит:

class Messager(Process):
    def __init__(self):
        Process.__init__(self,'messager')

    def monitor(self):
        while True:
            yield waitevent, self, messageEvent
            print messageEvent.signalparam

messager = Messager()
activate(messager,messager.monitor())

это работает нормально. Однако на самом деле существует более одного события, которое должно обрабатываться Messager, и я хочу, чтобы Messager возвращал signalparam для причинного события в списке событий:

messageEvents = [Event1,Event2,Event3]

class Messager(Process):
    def __init__(self):
        Process.__init__(self,'messager')

    def monitor(self):
        while True:
            yield waitevent, self, messageEvents
            .....

как мне получить доступ к signalparam события, которое произошло?


person meepmeep    schedule 04.09.2012    source источник
comment
почему messageEvent.singalparam не будет работать???? Чем отличается вторая ситуация? Вы можете уточнить?   -  person przemo_li    schedule 18.09.2012
comment
в первом случае messageEvent — это одно событие с параметром signalparam. Во втором случае messageEvents — это список событий. Мне нужно отфильтровать список для события, которое вызвало событие ожидания. Я не вижу свойства этих событий, которое позволит мне определить это.   -  person meepmeep    schedule 18.09.2012
comment
Итак, измените вопрос на: Как определить, вызвало ли данное событие событие ожидания в Python SimPy?   -  person przemo_li    schedule 18.09.2012
comment
это не совсем то, о чем я прошу (но это был бы более длинный способ добиться того же). Я не мог придумать краткое название вопроса, которое охватывало бы всю проблему, поэтому я использовал немного простое.   -  person meepmeep    schedule 18.09.2012
comment
Пожалуйста, рассмотрите возможность обновления до SimPy 3. SimPy 2 устарел, устарел и не поддерживается.   -  person Stefan Scherfke    schedule 11.10.2016


Ответы (1)


Глядя на источник simpy и, в частности, класса Simevent, если вы можете каким-то образом передать событие классу Simevent, вы сможете получить из него параметр сигнала атрибута. Не уверен, что это возможно, но, надеюсь, вы знаете, как это сделать. Удачи.

РЕДАКТИРОВАТЬ: Только что подумал об этом, вы можете отредактировать свой simpy и сделать класс Simevent функцией для получения параметра сигнала. К вашему сведению, если вы хотите это сделать, класс simevent находится в файле lib.py.

person Mitch    schedule 25.09.2012
comment
извините, я должен был прояснить - события, о которых я говорю, - это SimEvents, поэтому есть функции signalparam. Я просто не могу отфильтровать SimEvents, чтобы узнать, из какого из них я хочу прочитать параметр сигнала! - person meepmeep; 25.09.2012