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
    

Copyleft 2006 Juanjo Conti