我在使用python中的線程時遇到了一些麻煩。 由於某些原因,我必須創建2個線程。每個線程都做着幾乎相同的事情: 一個接收數據併發送它們的循環。 我的問題是:我不知道如何阻止這些線程。數據連續發送。 我試圖使用「KeyboardInterrupt」和「myThread.daemon」,但循環仍在控制檯中運行。 所以,如果你知道一個解決方案來阻止他們(用'CTRL + C'或'Keypressed'),我會很開心。停止兩個循環線程連續接收和發送數據
這裏是我的代碼的全球運作:
#=========#
#Thread 1 #
#=========#
class ThreadEmissionSerie1(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
variable = 0
while 1:
try:
print "variable 1 : ", variable
variable += 2
except:
pass
#=========#
#Thread 2 #
#=========#
class ThreadEmissionSerie2(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
variable = 0
while 1:
try:
print "variable 2 : ", variable
variable += 3
except:
pass
print "starting the threads"
th_E1 = ThreadEmissionSerie1()
th_E2 = ThreadEmissionSerie2()
th_E1.daemon = True
th_E2.daemon = True
th_E1.start()
th_E2.start()
我希望有人能幫助我:) 這個程序應該在Windows和Linux 由於運行, 亞瑟
你能澄清你的問題嗎?上面顯示的代碼在啓動後幾乎立即結束 - 主線程結束,然後守護進程關閉(當它們是唯一的線程時),並停止。如果在此代碼的末尾添加while 1:pass,它會一直運行,直到您點擊ctrl-C,然後退出。問題是什麼? – GreenAsJade
我的問題是,代碼永遠不會停止。我在Windows XP上,使用python2.7,並且程序仍然在控制檯中運行,同時按下ctrl-C。 也許你運行它與Windows控制檯(它立即停止..)? 嘗試它在蟒蛇殼oppingning與IDLE – tutur29
確實,我試圖在linux上添加「while 1:pass」 在最後,它的工作原理。我不明白爲什麼在Windows(python外殼)它不能正常工作... – tutur29