[Python-es] Control de tiempo entre conmutaciones de 0 y 1

Ricardo Cárdenes ricardo.cardenes en gmail.com
Mie Mar 22 00:30:17 EDT 2017


Según la presentación del problema, es un ciclo de: "imprimir 0", "esperar
T0 segundos", "imprimir 1", "esperar T1 segundos"

2017-03-21 10:07 GMT-10:00 Carlos Zuniga <carlos.zun en gmail.com>:

> 2017-03-20 23:05 GMT-05:00 Rolando Paz <flxpaz en gmail.com>:
> > Hola a todos de nuevo...
> >
> > Ahora regreso con un pequeño código:
> >
> > import time
> >
> > start_time = time.time()
> > #tiempo total en segundos, como ejemplo 10.
> > tiempo_total = 10
> > #numero de conmutaciones generadas, como ejemplo 4.
> > conmutaciones = 4
> > for offset in range(tiempo_total):
> >     while (time.time() - start_time) < offset:
> >         time.sleep(0.01)
> >         #lo siguiente realiza una conmutacion entre 0 y 1.
> >         count = 0
> >         for i in range(conmutaciones):
> >             count = (count + 1) % 2
> >              print count
> >
> > Lo que hace este código es conmutar entre 0 y 1, tantas veces como se
> defina
> > en "conmutaciones", durante el tiempo establecido en "tiempo_total".
> >
> > La salida es la siguiente.
> >
> > 0
> > 1
> > 0
> > 1
> >
> > Estoy tratando de entender cómo usar este código para controlar los
> tiempos
> > que se definen en la imagen adjunta, es decir:
> >
> > T1 = tiempo durante el cual la conmutacion es 1
> > T0 = tiempo durante el cual la conmutacion es 0
> > Tiempo Total = tiempo total de las conmutaciones
> >
> > Agradecería cualquier comentario sobre como poder controlar los tiempos
> > anteriores.
> >
>
> Tu intención es que espere un tiempo tras cada print de 0 o 1? o que
> imprima 0/1 4 veces y luego esperar?
>
>     import time
>     from itertools import cycle
>     conmutador = cycle((0,1))
>
>     tiempo_total = 10
>     conmutaciones = 4
>
>     start = time.time()
>     end = start + tiempo_total
>     time_per_pulse = tiempo_total / conmutaciones
>     while end > time.time():
>         pulse_start = time.time()
>         print(next(conmutador))
>         pulse_end = time.time()
>         time.sleep(time_per_pulse - (pulse_end - pulse_start))
>
>
> Ahora, time.sleep no es exacto, el tiempo va a ser normalmente mayor
> al que especificas, depende del sistema. También hay
> threading.Event.wait que puede ser más exacto.
>
>
> Saludos
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20170321/1a4a7479/attachment.html>


Más información sobre la lista de distribución Python-es