[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