download: pte-d.py
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
""" Permite simular sistemas discretos mediante
la tecnica de Programacion Temporal de Eventos.
"""
# Reloj internet de simulación.
t = 0
# Lista de pares evento,tiempo.
eventos = []
def programar_proximo_evento(funcion,delta_t):
global eventos, t
""" Permite programar un evento para ser ejecutado dentro de
un determinado tiempo.
"""
eventos.append((funcion,t + delta_t))
eventos.sort(lambda e1,e2:e1[1]-e2[1])
PPE = programar_proximo_evento
def seleccionar_proximo_evento():
global eventos, t
""" Toma el primer evento de la lista de eventos, adelanta el reloj y
ejecuta el evento correspondiente.
"""
f,pt = eventos.pop(0)
t = pt # se actualiza el reloj con el tiempo del próximo evento
f()
SPE = seleccionar_proximo_evento