【发布时间】:2012-09-04 14:07:32
【问题描述】:
我正在使用 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 在事件列表中返回导致事件的信号参数:
messageEvents = [Event1,Event2,Event3]
class Messager(Process):
def __init__(self):
Process.__init__(self,'messager')
def monitor(self):
while True:
yield waitevent, self, messageEvents
.....
如何访问已发生事件的信号参数?
【问题讨论】:
-
为什么 messageEvent.singalparam 不起作用????第二种情况有何不同?你能澄清一下吗?
-
在第一种情况下,messageEvent 是带有信号参数的单个事件。在第二种情况下,messageEvents 是一个事件列表。我需要过滤触发 waitevent 的事件列表。我看不到这些事件的属性,这将使我能够确定这一点。
-
所以将问题更改为:如何确定给定事件是否在 Python SimPy 中触发了 waitevent?
-
这也不是我要问的(但实现相同目标的方法更长)。我想不出一个能概括整个问题的简短问题标题,所以我使用了一个稍微简单的标题。
-
请考虑更新到 SimPy 3。SimPy 2 旧、过时且未维护。