現在、SimPy を使用してサーバー プロセスのモデル化とシミュレーションを行っていますが、このメッセージの受信元に応じて、このプロセスに異なるアクションを実行させたいと考えています。
SimPy のドキュメントには、複数のイベントを待機する方法が示されています。イベント2
ただし、現在、リソースが複数のストアから利用可能になるのを待っています。
シナリオは次のとおりです。サーバー S は、さまざまなチャネルからのメッセージを待機しています。これらの各チャネルには、メッセージが到達するまでの時間に影響するさまざまな機能があります。
問題のコードは次のとおりです。
resources = [inchannel.get() for inchannel in inchannels]
msg = yield simpy.events.AnyOf(env, resources)
ここで、inchannel は、サーバーへの入力のさまざまなチャネルをモデル化するストアの配列です。
私が抱えている問題は、最初に受信したチャネルのいずれかからのメッセージのみを受け入れるように見えることです。最初のメッセージを受信した後、そのチャネルからのメッセージを受け入れ、他のメッセージを無視します。
私も次のことを試しました:
resource = inchannel[0].get() | inchannel[1].get() | ...
msg = yield resource
この場合、inchannel[0] からのみ受信します