SimPy 是一个基于标准 Python 的进程离散事件模拟框架。在 SimPy 中,进程通过 Python 生成器函数定义,可以用于模拟如客户、车辆或代理等主动组件。SimPy 还提供了各种类型的共享资源,以模拟有限容量的拥堵点(如服务器、收银台和隧道)。模拟可以“尽可能快”地进行,实时(挂钟时间)或通过手动逐步执行事件。虽然理论上可以使用 SimPy 进行连续模拟,但它没有帮助您实现这一点的功能。另一方面,对于步长固定且您的进程不相互交互或不与共享资源交互的模拟,SimPy 则显得过于复杂。
一个简短的例子模拟了两个时钟以不同的时间间隔滴答作响:
>>> 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))
<Process(clock) object at 0x...>
>>> env.process(clock(env, 'slow', 1))
<Process(clock) object at 0x...>
>>> env.run(until=2)
fast 0
slow 0
fast 0.5
slow 1
fast 1.0
fast 1.5
文档包含一个教程,几个解释关键概念的指南,一些示例和 API 参考。SimPy 是根据 MIT 许可证发布的。鼓励模拟模型开发者与 SimPy 社区分享他们的 SimPy 建模技术。请向 SimPy 邮件列表发布消息。有一个介绍性演讲解释了 SimPy 的概念并提供了一些示例:观看视频或获取幻灯片。SimPy 也被重新实现为其他编程语言。有关更多详细信息,请参阅端口列表。