Risposta breve: utilizzare os._exit
.
Risposta lunga con l'esempio:
Diedi uno strattone e leggermente modificato un semplice esempio filettatura da a tutorial on DevShed:
import threading, sys, os
theVar = 1
class MyThread (threading.Thread):
def run (self):
global theVar
print 'This is thread ' + str (theVar) + ' speaking.'
print 'Hello and good bye.'
theVar = theVar + 1
if theVar == 4:
#sys.exit(1)
os._exit(1)
print '(done)'
for x in xrange (7):
MyThread().start()
Se si mantiene sys.exit(1)
commentata, lo script moriranno dopo il terzo filo stampe fuori. Se si utilizza sys.exit(1)
e si commenta os._exit(1)
, il terzo thread esegue non stampa (done)
e il programma esegue tutti e sette i thread.
os._exit
"normalmente dovrebbe essere utilizzato solo nel processo figlio dopo un fork()" - e un thread separato è abbastanza vicino a quello per il tuo scopo. Si noti inoltre che ci sono diversi valori enumerati elencati subito dopo os._exit
in quella pagina di manuale, e si preferiscono quelli come argomenti a os._exit
invece di numeri semplici come quelli usati nell'esempio sopra.
fonte
2009-09-28 23:21:53
Il link è morto. – OrangeDog