Я пытаюсь написать простой мультиплексор в simpy как часть упражнения по моделированию сети. У меня есть два хранилища, s1 и s2, и я хочу сделать один yield, который ждет, пока один или оба из s1 и s2 вернут «пакет» с помощью стандартного метода Store.get (). Это действительно работает, но я не могу определить, какое из двух хранилищ действительно вернуло пакет. Как правильно это сделать - вставив соответствующий код вместо комментария в приведенный ниже код?
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)