2012-09-04 2 views
1

시간 기반 시뮬레이션을 위해 SimPy를 사용하고 있습니다.simpy에서 Event 매개 변수 얻기

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()) 

이 잘 작동 :

나는이 발생하면 해당 이벤트의 매개 변수를 특정 이벤트를 수신하고 반환하는 멧세이 프로세스를 가지고있다. 그러나, 현실에서이 멧세이에 의해 처리되어야 하나 개 이상의 이벤트이며, 나는 멧세이 이벤트의 목록에 원인이 이벤트에 대한 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 액세스합니까 발생한 이벤트의

+0

왜 messageEvent.singalparam이 작동하지 않습니까? 두 번째 상황은 어떻게 다른가요? 당신은 명확히 할 수 있습니까? 첫 번째 경우에는 –

+0

이고 messageEvent는 signalparam이있는 단일 이벤트입니다. 두 번째 경우에서 messageEvents는 이벤트 목록입니다. 해당 이벤트를 트리거 한 목록을 필터링해야합니다. 내가 결정할 수있는 이벤트의 속성을 볼 수 없습니다. – meepmeep

+0

질문을 다음으로 변경하십시오 : 주어진 이벤트가 파이썬 SimPy에서 waitevent를 트리거했는지 확인하는 방법은 무엇입니까? –

답변

0

simpy의 소스, 특히 Simevent 클래스를 살펴보면 Simevent 클래스에 이벤트를 캐스트 할 수 있다면 속성 신호 매개 변수를 가져올 수 있어야합니다. 이것이 가능한지 확실하지 않지만 잘하면이 작업을 수행하는 방법을 알고 있습니다. 행운을 빕니다.

EDIT : simpy를 편집하여 Simevent 클래스가 signalparam을 가져 오는 함수를 만들 수 있습니다. 참고로 simevent 클래스는 lib.py 파일에 있습니다.

+0

미안하지만 분명히 밝혀야합니다 - 내가 언급 한 이벤트는 SimEvents이므로 signalparam 함수가 있습니다. 나는 어느 것이 하나의 signalparam을 읽고 싶은지 찾기 위해 SimEvents를 걸러 낼 수 없다! – meepmeep

관련 문제