download: pte.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 _comparar_tiempos(a,b):
""" Función auxiliar usada para ordenar los pares eventos,tiempos
en la lista de eventos.
"""
t1 = a[1]
t2 = b[1]
if (t1 > t2): return 1
elif (t1 < t2): return -1
else: return 0
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(_comparar_tiempos)
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