SimPy ist ein leistungsstarkes Framework für die Simulation diskreter Ereignisse in Python. Es ermöglicht die Modellierung von Prozessen durch Python-Generatorfunktionen, die aktive Komponenten wie Kunden, Fahrzeuge oder Agenten darstellen können. Darüber hinaus bietet SimPy verschiedene Arten von gemeinsamen Ressourcen, um Engpässe mit begrenzter Kapazität, wie Server, Kassen oder Tunnel, zu modellieren.
Simulationen können so schnell wie möglich, in Echtzeit oder durch manuelles Durchschreiten der Ereignisse durchgeführt werden. Obwohl es theoretisch möglich ist, kontinuierliche Simulationen mit SimPy durchzuführen, bietet es keine speziellen Funktionen dafür. Andererseits ist SimPy übertrieben für Simulationen mit einer festen Schrittgröße, bei denen Ihre Prozesse nicht miteinander oder mit gemeinsamen Ressourcen interagieren.
Ein kurzes Beispiel, das zwei Uhren simuliert, die in unterschiedlichen Zeitintervallen ticken, sieht so aus:
import simpy
def clock(env, name, tick):
while True:
print(name, env.now)
yield env.timeout(tick)
env = simpy.Environment()
env.process(clock(env, 'fast', 0.5))
env.process(clock(env, 'slow', 1))
env.run(until=2)
Die Dokumentation enthält ein Tutorial, mehrere Anleitungen, die Schlüsselkonzepte erklären, eine Reihe von Beispielen und die API-Referenz. SimPy wird unter der MIT-Lizenz veröffentlicht. Entwickler von Simulationsmodellen werden ermutigt, ihre SimPy-Modellierungstechniken mit der SimPy-Community zu teilen. Bitte senden Sie eine Nachricht an die SimPy-Mailingliste. Es gibt einen einführenden Vortrag, der die Konzepte von SimPy erklärt und einige Beispiele liefert: Sehen Sie sich das Video an oder holen Sie sich die Folien. SimPy wurde auch in anderen Programmiersprachen neu implementiert. Weitere Details finden Sie in der Liste der Ports.