所有离散事件程序自动以软件时钟的方式保持当前模拟时间。在SimPy中可以通过now()函数得到当前模拟时间,在模拟开始的时候,软件时钟设置为0.0。用户不能直接改变软件时钟。
当模拟软件运行时,当前模拟时间随着事件进行一步步增加。随着模拟系统状态的改变,事件随时会发生。如:顾客的到达就是一个事件,同理,顾客的离开也是。
使用SimPy是必须载入Simulation模块:
以下语句必须在出现在任何SimPy进程被激活之前,用来初始化模拟系统的全局变量和把软件时钟置零:
接下来是一些创建和激活对象的SimPy语句。当遇到下面语句时,模拟系统将开始运行:
然后模拟开始,SimPy开始查找并执行第一个预订的事件,执行完后,继续寻找并执行第二个事件,以此类推。这将持续进行直到出现下列情况:
接下来的代码仅仅显示了模拟程序的主要部分(能够完整执行的代码请看示例1和示例2),这里Message是一个预定义的Process的子类,m是它的实例,是一个特定的消息。激活的m执行至少一个预定义的时间,这里执行m的PEM(这里是go),simulate(until=1000.0)语句将立即跳到第一个预定义的事件来开始运行模拟系统。它将一直运行下去知道事件执行完毕或模拟时间到达1000.0。当模拟结束,预先编写的Report方法将被执行用来显示结果: