2

私は SystemC の世界から来て、Python で簡単なものをコーディングしようとしています。Python に (SystemC の) peq_with_get() に似たものがあるのだろうかと思います。これは基本的に、イベントに対して行われたすべてのトリガーを保存するキューです。テストするために次のコードを開発しましたが、機能していないようです。simpy にイベント キューがあるかどうかを知るために、皆さんが私を案内してくれるかどうか疑問に思っています。

import simpy

SIM_DURATION = 100

class SomeClass(object):

    def __init__(self, env):
        self.env = env
        self.event_trig     = self.env.event()
        self.event_recvd    = self.env.event()

        simpy.events.Process( self.env, self._submit_loop() )
        simpy.events.Process( self.env, self._complete_loop() )

    def _submit_loop(self):
        while True:
            print('Waiting to Receive the Trigger')
            yield self.event_trig
            print('Event Received at Time %d' % env.now )
            self.event_recvd.succeed()


    def _complete_loop(self):
        while True:
            print('Trigger at time %d' % (env.now + 5) )
            self.event_trig = self.env.timeout(5)
            print('Trigger at time %d' % (env.now + 6) ) 
            self.event_trig = self.env.timeout(6)
            print('Trigger at time %d' % (env.now + 7) ) 
            self.event_trig = self.env.timeout(7)
            yield self.event_recvd
            print('Current Time is %d. Wait for 10' % env.now)
            yield self.env.timeout(10)

print('Start Sim')
env = simpy.Environment()
someCls = SomeClass( env )
env.run()
4

1 に答える 1

0

私が理解したのは、イベントが複数のトリガーポイントを保持できないということです (答えは明確にはわかりませんが、すべてがそれを示しています)。ただし、SystemC の世界で peq_with_get に相当するものは simpy.Store() であり、「put」メソッドでプロセスを定義することで拡張できます。peq_with_get ほど単純ではありませんが、同じ機能を提供します。次のリンクをたどると、コード スニペットから詳細情報を取得できます: http://simpy.readthedocs.io/en/latest/examples/latency.html

peq_with_get の機能について少し説明を加えると、これはペイロード イベント キューであり、オブジェクトをプッシュすることによって通知 (トリガー) できます。これは、通知時に指定された遅延で消費スレッドが使用できるようになります (トリガー ステートメント) 時間。

于 2016-09-12T16:18:26.980 に答える