Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在simpy中获取事件的signalparam_Python_Simpy - Fatal编程技术网

Python 正在simpy中获取事件的signalparam

Python 正在simpy中获取事件的signalparam,python,simpy,Python,Simpy,我使用SimPy进行基于时间的模拟 我有一个Messager进程,它侦听特定事件,并在事件发生时返回该事件的参数: class Messager(Process): def __init__(self): Process.__init__(self,'messager') def monitor(self): while True: yield waitevent, self, messageEvent

我使用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())
这个很好用。但是,实际上有多个事件应该由消息传递者处理,我希望消息传递者在事件列表中返回导致事件的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?

查看simpy的源,特别是Simevent类的源,如果您能够以某种方式将事件强制转换为Simevent类,那么您应该能够从中获取属性signal param。不确定这是否可能,但希望你知道一种方法来做到这一点。祝你好运

编辑:
考虑到这一点,您可以编辑simpy并使Simevent类具有获取signalparam的函数。仅供参考如果您想这样做,simevent类位于lib.py文件中。

为什么messageEvent.singalparam不起作用????第二种情况有什么不同?您能澄清一下吗?在第一种情况下,messageEvent是带有signalparam的单个事件。在第二种情况下,messageEvents是一个事件列表。我需要筛选触发waitevent的事件列表。我看不到这些事件的属性可以让我确定这一点。所以将问题改为:如何确定给定事件是否在Python SimPy中触发了waitevent?这也不是我要问的问题(但这将是实现相同目标的一种更长的方法)。我想不出一个简短的问题标题来解决整个问题,所以我使用了一个简单的问题。请考虑更新到SimPy 3。SimPy 2是旧的、过时的和未维护的。对不起,我应该说清楚-我指的事件是SimEvents,所以有signalparam函数。我只是无法过滤SimEvents,以找出我要从中读取signalparam的事件!