可能重複:
Is there any way to kill a Thread in Python?的Python:如何終止阻塞線程
所以這個問題是一個跟進到以前發佈的解決方案。基本上它涉及編程方式終止一個線程:http://sebulba.wikispaces.com/recipe+thread2
然而,它不工作......我想知道如果有人可以解釋如何可以終止一個阻塞的線程?我唯一的猜測是,我沒有提供正確的線程ID,但我做了一些測試,我很確定我可以使用標識
如果它是線程ID,我該如何去獲得正確的線程ID?
測試代碼:
class BlockingTestThread(Thread):
def __init__(self):
self._running_flag = False
Thread.__init__(self, target=self.test_method)
def test_method(self):
try:
while(not self.stopped()):
self._running_flag = True
time.sleep(100)
finally:
self._running_flag = False
def _async_raise(tid, exctype):
'''Raises an exception in the threads with id tid'''
if not inspect.isclass(exctype):
raise TypeError("Only types can be raised (not instances)")
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(tid), ctypes.py_object(exctype))
time.sleep(0.1)
if __name__ == "__main__":
thread = BlockingTestThread()
thread.start()
_async_raise(thread.ident, SystemExit)
print "Joining thread"
thread.join()
print "Done Joining thread"
#will never get here!
順便說一句,我的黑客是interup連接,接收機正在監聽,我基本上只是抓住它並退出循環。它的醜陋,但我找不到另一種方式。 – Nix
你同意它是重複的嗎? –