simpy.core — SimPy’s core components¶
Core components for event-discrete simulation environments.
-
class
simpy.core.BaseEnvironment¶ Base class for event processing environments.
An implementation must at least provide the means to access the current time of the environment (see
now) and to schedule (seeschedule()) events as well as processing them (seestep().The class is meant to be subclassed for different execution environments. For example, SimPy defines a
Environmentfor simulations with a virtual time and and aRealtimeEnvironmentthat schedules and executes events in real (e.g., wallclock) time.-
now¶ The current time of the environment.
-
active_process¶ The currently active process of the environment.
-
schedule(event, priority=1, delay=0)¶ Schedule an event with a given priority and a delay.
-
step()¶ Processes the next event.
-
run(until=None)¶ Executes
step()until the given criterion until is met.- If it is
None(which is the default), this method will return when there are no further events to be processed. - If it is an
Event, the method will continue stepping until this event has been triggered and will return its value. Raises aRuntimeErrorif there are no further events to be processed and the until event was not triggered. - If it is a number, the method will continue stepping until the environment’s time reaches until.
- If it is
-
exit(value=None)¶ Stop the current process, optionally providing a
value.This is a convenience function provided for Python versions prior to 3.3. From Python 3.3, you can instead use
return valuein a process.
-
-
class
simpy.core.Environment(initial_time=0)¶ Execution environment for an event-based simulation. The passing of time is simulated by stepping from event to event.
You can provide an initial_time for the environment. By default, it starts at
0.This class also provides aliases for common event types, for example
process,timeoutandevent.-
now¶ The current simulation time.
-
active_process¶ The currently active process of the environment.
-
event()¶ Return a new
Eventinstance. Yielding this event suspends a process until another process triggers the event.
-
exit(value=None)¶ Stop the current process, optionally providing a
value.This is a convenience function provided for Python versions prior to 3.3. From Python 3.3, you can instead use
return valuein a process.
-
schedule(event, priority=1, delay=0)¶ Schedule an event with a given priority and a delay.
-
step()¶ Process the next event.
Raise an
EmptyScheduleif no further events are available.
-
run(until=None)¶ Executes
step()until the given criterion until is met.- If it is
None(which is the default), this method will return when there are no further events to be processed. - If it is an
Event, the method will continue stepping until this event has been triggered and will return its value. Raises aRuntimeErrorif there are no further events to be processed and the until event was not triggered. - If it is a number, the method will continue stepping until the environment’s time reaches until.
- If it is
-
-
class
simpy.core.BoundClass(cls)¶ Allows classes to behave like methods.
The
__get__()descriptor is basically identical tofunction.__get__()and binds the first argument of theclsto the descriptor instance.-
static
bind_early(instance)¶ Bind all
BoundClassattributes of the instance’s class to the instance itself to increase performance.
-
static
-
class
simpy.core.EmptySchedule¶ Thrown by an
Environmentif there are no further events to be processed.
-
simpy.core.Infinity= inf¶ Convenience alias for infinity