1
我正在尋找一種通過使用sys.exit()來終止線程的方法。我有兩個函數add1()
和subtract1()
,它們分別由每個線程t1
和t2
執行。我想在完成add1()
和t2
完成subtract1()
後終止t1
。我可以看到sys.exit()
這樣做。這樣做可以嗎?使用sys.exit()終止python線程
import time, threading,sys
functionLock = threading.Lock()
total = 0;
def myfunction(caller,num):
global total, functionLock
functionLock.acquire()
if caller=='add1':
total+=num
print"1. addition finish with Total:"+str(total)
time.sleep(2)
total+=num
print"2. addition finish with Total:"+str(total)
else:
time.sleep(1)
total-=num
print"\nSubtraction finish with Total:"+str(total)
functionLock.release()
def add1():
print '\n START add'
myfunction('add1',10)
print '\n END add'
sys.exit(0)
print '\n END add1'
def subtract1():
print '\n START Sub'
myfunction('sub1',100)
print '\n END Sub'
sys.exit(0)
print '\n END Sub1'
def main():
t1 = threading.Thread(target=add1)
t2 = threading.Thread(target=subtract1)
t1.start()
t2.start()
while 1:
print "running"
time.sleep(1)
#sys.exit(0)
if __name__ == "__main__":
main()
'sys.exit'函數關閉整個解釋器。你應該使用別的東西。 – Bakuriu
你不應該尋找一種殺死線程的方法。當涉及I/O時(而不僅僅是),它可能會導致嚴重的問題。相反,你應該通知你的線程,你希望它完成任何正在做和放棄的事情。 – freakish