我有一個Python GUI,用於測試我工作的各個方面。目前,我有一個「停止」按鈕,它會在每次測試結束時終止進程(可以有多個測試設置爲一次運行)。但是,一些測試需要很長時間才能運行,如果我需要停止測試,我希望它立即停止。我的想法是使用如何從Tkinter窗口立即停止Python進程?
import pdb; pdb.set_trace()
exit
但我不知道如何將它注入下一個代碼行。這可能嗎?
我有一個Python GUI,用於測試我工作的各個方面。目前,我有一個「停止」按鈕,它會在每次測試結束時終止進程(可以有多個測試設置爲一次運行)。但是,一些測試需要很長時間才能運行,如果我需要停止測試,我希望它立即停止。我的想法是使用如何從Tkinter窗口立即停止Python進程?
import pdb; pdb.set_trace()
exit
但我不知道如何將它注入下一個代碼行。這可能嗎?
如果是線程,則可以使用thread
(或Python 2中的_thread
)模塊通過調用thread.exit()
來終止該線程,但有一個例外。
一個清潔的方法(取決於您處理如何設置),將信號線使用實例變量停止處理並退出,然後調用從主線程join()
方法要等到線程退出。
例子:
class MyThread(threading.Thread):
def __init__(self):
super(MyThread, self).__init__()
self._stop_req = False
def run(self):
while not self._stop_req:
pass
# processing
# clean up before exiting
def stop(self):
# triggers the threading event
self._stop_req = True;
def main():
# set up the processing thread
processing_thread = MyThread()
processing_thread.start()
# do other things
# stop the thread and wait for it to exit
processing_thread.stop()
processing_thread.join()
if __name__ == "__main__":
main()
你們是不是要停止蟒蛇進程或線程蟒蛇? – 2012-08-13 16:38:23
它是一個單獨的線程。 – 2012-08-13 16:52:18