ネットワーク モデリング演習の一環として、簡単なマルチプレクサを simpy でコーディングしようとしています。私が持っているのは、s1 と s2 の 2 つのストアで、s1 と s2 の一方または両方が標準の Store.get() メソッドを介して「パケット」を返すのを待つ単一の yield を実行したいと考えています。これは機能しますが、2 つのストアのどちらが実際にパケットを返したかを判断できません。以下のコードにコメントの代わりに適切なコードを挿入することによって、これを行う正しい方法は何ですか?
import simpy
env = simpy.Environment()
s1 = simpy.Store(env, capacity=4)
s2 = simpy.Store(env, capacity=4)
def putpkts():
a =1
b= 2
s1.put(a)
s2.put(b)
yield env.timeout(40)
s1.put(a)
yield env.timeout(40)
s2.put(b)
yield env.timeout(40)
def getpkts():
while True:
stuff = (yield s1.get() | s2.get() )
# here, I need to put code to determine
# whether the 'stuff' dict
# contains an item from store s1, or store s2, or both.
# how can I do this?
proc1 = env.process(putpkts())
proc2 = env.process(getpkts())
env.run(until = proc2)