何大家,如何停止線程python
我試圖停止這個線程時,程序停止(就像當我按Ctrl + C),但沒有運氣。 我試過把t1.daemon=True
,但是當我這樣做時,我的程序剛啓動後就結束了。請幫我阻止它。
def run():
t1 = threading.Thread(target=aStream).start()
if __name__=='__main__':
run()
何大家,如何停止線程python
我試圖停止這個線程時,程序停止(就像當我按Ctrl + C),但沒有運氣。 我試過把t1.daemon=True
,但是當我這樣做時,我的程序剛啓動後就結束了。請幫我阻止它。
def run():
t1 = threading.Thread(target=aStream).start()
if __name__=='__main__':
run()
做你彷彿想要的一種常見方式,一會兒加入線程(S),像這樣:
def main():
t = threading.Thread(target=func)
t.daemon = True
t.start()
try:
while True:
t.join(1)
except KeyboardInterrupt:
print "^C is caught, exiting"
重要的是要做到這一點與超時一個循環是非常重要的(不是一個permament join()
),因爲信號只被主線程捕獲,所以如果主線程被阻塞,永遠不會結束。
另一種方法是設置一些事件以讓非守護線程知道何時完成,看起來更像是令我頭疼的事情。
沒有「停止線程」這樣的事情。創建一個循環條件,當您收到'KeyboardInterrupt'時,您可以從外部設置該條件。或者在主線程中創建一個無限循環以保持程序活着,而其他線程是deamon – JBernardo 2013-04-26 14:10:12