SimPy


SimPy is a process-based discrete-event simulation framework based on standard
Python. Its event dispatcher is based on Python’s and can also
be used for asynchronous networking or to implement multi-agent systems.
Processes in SimPy are simple Python generator functions and are used to model
active components like customers, vehicles or agents. SimPy also provides
various types of shared resources to model limited capacity congestion points
. From version 3.1, it will also
provide monitoring capabilities to aid in gathering statistics about resources
and processes.
Simulations can be performed “as fast as possible”, in real time or by manually stepping through the events.
Though it is theoretically possible to do continuous simulations with SimPy, it
has no features to carry out that. However, SimPy is overkill
for simulations with a fixed step size where your processes don’t interact with
each other or with shared resources — use a simple while loop in this case.
The SimPy distribution contains tutorials, in-depth documentation, and a large
number of examples.
SimPy is released as open source software under the MIT License. The first version was released in December 2002.

Example

One of SimPy's main goals is to be easy to use. Here is an example for a simple SimPy simulation: a clock process that prints the current simulation time at each step:

>>> import simpy
>>>
>>> def clock:
... while True:
... print
... yield env.timeout
...
>>> env = simpy.Environment
>>> env.process
0x...>
>>> env.process

>>> env.run
fast 0
slow 0
fast 0.5
slow 1
fast 1.0
fast 1.5