Stop Python thread

I have this code, how can I stop func2 from func1? something like Thread(target = func1).stop() doesn't work

 import threading from threading import Thread def func1(): while True: print 'working 1' def func2(): while True: print 'Working2' if __name__ == '__main__': Thread(target = func1).start() Thread(target = func2).start() 
+5
source share
2 answers

It is better to ask your other thread to stop using a message queue, for example.

 import time import threading from threading import Thread import Queue q = Queue.Queue() def func1(): while True: try: item = q.get(True, 1) if item == 'quit': print 'quitting' break except: pass print 'working 1' def func2(): time.sleep(10) q.put("quit") while True: time.sleep(1) print 'Working2' if __name__ == '__main__': Thread(target = func1).start() Thread(target = func2).start() 
0
source

You cannot say that the thread will stop, you must return it to your target function

 from threading import Thread import Queue q = Queue.Queue() def thread_func(): while True: # checking if done try: item = q.get(False) if item == 'stop': break # or return except Queue.Empty: pass print 'working 1' def stop(): q.put('stop') if __name__ == '__main__': Thread(target=thread_func).start() # so some stuff ... stop() # here you tell your thread to stop # it will stop the next time it passes at (checking if done) 
0
source

Source: https://habr.com/ru/post/1246532/


All Articles