SimPyは、Pythonのジェネレータ関数に基づいてプロセスを定義するプロセスベースの離散事象シミュレーションフレームワークです。これにより、顧客、車両、エージェントなどのアクティブなコンポーネントをモデル化するために使用できます。SimPyはまた、サーバー、レジカウンター、トンネルなどの限られた容量の混雑ポイントをモデル化するためのさまざまなタイプの共有リソースを提供します。シミュレーションは、「できるだけ速く」、リアルタイム(壁時計時間)、または手動でイベントをステップスルーして実行できます。理論的にはSimPyで連続シミュレーションを行うことは可能ですが、それを支援する機能はありません。一方、SimPyは、プロセスが互いに相互作用しない、または共有リソースと相互作用しない固定ステップサイズのシミュレーションには過剰です。異なる時間間隔で刻む2つの時計をシミュレートする短い例は次のようになります。
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)
このコードは、異なる速度で刻む2つの時計の動作をシミュレートします。SimPyのドキュメントには、チュートリアル、主要な概念を説明するいくつかのガイド、多数の例、およびAPIリファレンスが含まれています。SimPyはMITライセンスの下でリリースされています。シミュレーションモデルの開発者は、SimPyコミュニティとSimPyモデリング技術を共有することを推奨されています。SimPyの概念を説明し、いくつかの例を提供する入門講演もあります。SimPyは他のプログラミング言語でも再実装されています。詳細については、ポートのリストを参照してください。