Sto scrivendo un programma che memorizza nella cache alcuni risultati tramite il modulo pickle. Quello che succede in questo momento è che se ho colpito ctrl-c quando l'operazione dump
si sta verificando, dump
viene interrotto e il file risultante è corrotto (cioè solo parzialmente scritto, quindi non può essere di nuovo load
ed.Come impedire che un blocco di codice venga interrotto da KeyboardInterrupt in Python?
C'è un modo per rendere dump
, o, in generale, un blocco di codice, uninterruptable mia soluzione attuale simile a questa:?
try:
file = open(path, 'w')
dump(obj, file)
file.close()
except KeyboardInterrupt:
file.close()
file.open(path,'w')
dump(obj, file)
file.close()
raise
sembra stupido per riavviare l'operazione se si è interrotto, quindi sono alla ricerca di un modo per posticipare l'interrupt Come posso fare?
Super utile, grazie. – JeffThompson
Questa soluzione è migliore di quella che coinvolge il modulo 'signal' perché è molto più facile farlo bene. Non sono sicuro che sia persino possibile scrivere una robusta soluzione basata sul segnale. – benrg