Ho uno script che gira su un ciclo infinito e aggiunge cose a un database e fa cose che non posso semplicemente interrompere a metà, quindi non posso semplicemente premere ctrl + C e fermarlo.Come fermare un loop infinito in modo sicuro in Python?
Voglio essere in grado di interrompere un ciclo while in qualche modo, ma lasciare che finisca l'ultima iterazione prima che si fermi.
Vorrei chiarire:
mio codice simile a questa:
while True:
does something
does more things
does more things
voglio essere in grado di interrompere il ciclo while alla fine, o l'inizio, ma non tra il fare le cose perché sarebbe male
e non voglio che mi chieda dopo ogni iterazione se voglio continuare.
grazie per le grandi risposte, io sono super grato, ma la mia realizzazione non sembra funzionare:
def signal_handler(signal, frame):
global interrupted
interrupted = True
class Crawler():
def __init__(self):
# not relevent
def crawl(self):
interrupted = False
signal.signal(signal.SIGINT, signal_handler)
while True:
doing things
more things
if interrupted:
print("Exiting..")
break
quando premo ctr + c il programma continua a andare soli ignorando me
avete un modo per determinare nel vostro script che se il lavoro è completato (ultimo)! Se lo fai allora usalo in una condizione e usa una dichiarazione di rottura – praba230890
Il lavoro in questo caso è un crawler web che può andare avanti indefinitamente. Voglio essere in grado di dirgli di smettere di strisciare, ma non solo di interromperlo nel mezzo di una pagina, per esempio. – davegri
* lascia che finisca la sua ultima iterazione prima che si fermi *? Come fai a sapere se ha fatto il lavoro o no? –