Saltar al contenido

Terminar un ciclo while infinito

Esta sección ha sido analizado por expertos para que tengas la garantía de la veracidad de nuestro post.

Solución:

Puede intentar envolver ese código en un bloque de prueba/excepto, porque las interrupciones del teclado son solo excepciones:

try:
    while True:
        IDs2=UpdatePoints(value,IDs2)
        time.sleep(10)
except KeyboardInterrupt:
    print('interrupted!')

Luego puede salir del bucle con CTRL-C.

Podrías usar excepciones. Pero solo debe usar excepciones para cosas que no deberían suceder. Así que no por esto.

Es por eso que recomiendo las señales:

import sys, signal
def signal_handler(signal, frame):
    print("nprogram exiting gracefully")
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)

debe poner esto al principio de su programa y cuando presione ctrl+c en cualquier parte de su programa, se cerrará con gracia

Explicación del código:

tu importas sys y signals. Luego haces una función que se ejecuta al salir. sys.exit(0) detiene la programación con el código de salida 0 (el código que dice, todo salió bien).

Cuando el programa obtenga el SIGINT, ya sea mediante ctrl-c o mediante un comando de eliminación en la terminal, el programa se cerrará correctamente.

Creo que la solución más fácil sería capturar KeyboardInterrupt cuando la interrupción key está presionado, y utilícelo para determinar cuándo detener el bucle.

except KeyboardInterrupt:
    break

La desventaja de buscar esta excepción es que puede evitar que el usuario finalice el programa mientras el ciclo aún se está ejecutando.

Sección de Reseñas y Valoraciones

Acuérdate de que tienes la capacidad de valorar este post si te ayudó.

¡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 *