Krótka odpowiedź: użyj os._exit
.
Długa odpowiedź z przykładu:
I szarpnął i nieco zmodyfikowany prosty przykład wątków z 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()
Jeśli trzymać sys.exit(1)
wykomentowane skrypt umrze po trzecim wypisuje gwintów. Jeśli używasz sys.exit(1)
i komentujesz os._exit(1)
, trzeci wątek ma , a nie drukuj (done)
, a program przechodzi przez wszystkie siedem wątków.
os._exit
"zwykle powinien być używany tylko w procesie potomnym po rozwidleniu()" - a oddzielny wątek jest wystarczająco blisko do tego celu. Zauważ, że na tej stronie podręcznika znajduje się kilka wymienionych wartości zaraz po os._exit
, a powinieneś preferować te jako argumenty do os._exit
zamiast prostych liczb takich jak użyłem w powyższym przykładzie.
Twój link jest martwy. – OrangeDog