Saltar al contenido

¿Cómo detendría un ciclo while después de n cantidad de tiempo?

Solución:

Intente lo siguiente:

import time
timeout = time.time() + 60*5   # 5 minutes from now
while True:
    test = 0
    if test == 5 or time.time() > timeout:
        break
    test = test - 1

Es posible que también desee agregar un breve descanso aquí para que este bucle no acabe con la CPU (por ejemplo time.sleep(1) al principio o al final del cuerpo del bucle).

No es necesario utilizar el while True: bucle en este caso. Hay una forma mucho más sencilla de utilizar la condición de tiempo directamente:

import time

# timeout variable can be omitted, if you use specific value in the while condition
timeout = 300   # [seconds]

timeout_start = time.time()

while time.time() < timeout_start + timeout:
    test = 0
    if test == 5:
        break
    test -= 1

Pruebe este módulo: http://pypi.python.org/pypi/interruptingcow/

from interruptingcow import timeout
try:
    with timeout(60*5, exception=RuntimeError):
        while True:
            test = 0
            if test == 5:
                break
            test = test - 1
except RuntimeError:
    pass
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *