Ich bin ein Anfänger, der beginnt, Python und Simpy zu verwenden. Ich möchte einen synchronen Kommunikationskanal zwischen 2 Prozessen haben. Zum Beispiel würde Ich mag haben:Simpy synchroner Kommunikationskanal
channel = ...
def writer(env):
for i in range(2):
yield env.timeout(0.75)
yield channel.put(i)
print("produced {} at time {}".format(i, env.now))
def reader(env):
while (True):
yield env.timeout(1.2)
i = yield channel.get()
print("consumed {} at time {}".format(i, env.now))
env = simpy.Environment()
env.process(writer(env))
env.process(reader(env))
env.run()
Es sollte als Ergebnis geben:
produced 0 at time 1.2
consumed 0 at time 1.2
produced 1 at time 2.4
consumed 1 at time 2.4
Was soll ich machen/Einsatz für die Definition des Kanals?
Wenn ich ein Store
als I (leicht von oben) bekommen würde:
import simpy
env = simpy.Environment()
channel = simpy.Store(env)
def writer():
for i in range(2):
yield env.timeout(0.75)
yield channel.put(i)
print("produced {} at time {}".format(i, env.now))
def reader():
while (True):
yield env.timeout(1.2)
i = yield channel.get()
print("consumed {} at time {}".format(i, env.now))
env.process(writer())
env.process(reader())
env.run()
und der Ausgang wäre:
produced 0 at time 0.75
consumed 0 at time 1.2
produced 1 at time 1.5
consumed 1 at time 2.4
Aber ich soll wie oben erwähnt, erhalten. Der Schreiber sollte warten, bis der Leser bereit ist zu lesen.
Vielen Dank für Ihre Antwort. Aber sowohl der Lese- als auch der Schreibprozess sollten aufeinander warten. Das wird nicht passieren, oder? Ich schätze, der Autor wird fortfahren, obwohl es warten sollte, bis der Leser bereit ist zu lesen. –
Vielen Dank. Im Grunde ist das was ich brauche. Ich werde jetzt darüber nachdenken, meinen eigenen Ressourcentyp zu schreiben. Aber zuerst muss ich mehr über Simpy und über Python im Allgemeinen erfahren. Wenn Sie Vorschläge für den Ressourcentyp haben, den ich brauche, wird das sehr geschätzt. –
Ich würde dies weiter verwenden, bis Sie sich mit Python und SimPy wohler fühlen und vertraut sind. Dann würde ich eine Unterklasse von Store schreiben, die das macht, was Sie wollen. Lesen Sie auch alle SimPy-Dokumente. ;-) –