Possible en double:
Is there any way to kill a Thread in Python?Python: Comment mettre fin à un fil de blocage
Donc, cette question fait suite à une solution tition. Fondamentalement, il s'agit de mettre fin à un fil par programmation: http://sebulba.wikispaces.com/recipe+thread2
Cependant, cela ne fonctionne pas ... et je me demandais si quelqu'un peut expliquer comment on pourrait terminer un thread qui bloque? Ma seule supposition est le fait que je ne fournis pas le bon identifiant de thread, mais j'ai fait quelques tests et je suis sûr que je peux juste utiliser iden
S'il s'agit de l'ID de thread, comment puis-je obtenir le bon thread ID?
Code d'essai:
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!
BTW, mon hack autour était d'interup la connexion que le récepteur écoutait, je fondamentalement puis juste l'attraper et quitter la boucle. C'est moche, mais je ne peux pas trouver un autre moyen. – Nix
Acceptez-vous que c'est un doublon? –