Python在多线程上关闭线程
这个问题已经在这里有了答案 :
有什么办法可以杀死线程吗?
(27个答案)
10个月前关闭。
为了简化这种情况,我正在尝试终止仍在Python 2.7中运行的线程,但我不确定该怎么做。
使用以下简单代码:
import time
import threading
def thread1():
print "Starting thread 1"
while True:
time.sleep(0.5)
print "Working"
thread1 = threading.Thread(target=thread1, args=())
thread1.start()
time.sleep(2)
print "Killing thread 1"
thread2.stop()
print "Checking if it worked:"
print "Thread is: " + str(thread1.isAlive())
线程1保持“工作”状态,而我试图在主线程中将其杀死。关于如何做的任何想法?我试过了:
threat1.terminate
threat1.stop
threat1.quit
threat1.end
这一切似乎都表明,没有办法通过简单的代码来真正阻止它。你有什么建议?
-
若要终止
Thread
受控对象,请使用线程安全threading.Event()
:import threading, time def Thread_Function(running): while running.is_set(): print('running') time.sleep(1) if __name__ == '__main__': running = threading.Event() running.set() thread = threading.Thread(target=Thread_Function, args=(running,)) thread.start() time.sleep(1) print('Event running.clear()') running.clear() print('Wait until Thread is terminating') thread.join() print("EXIT __main__")
输出 :
running running Event running.clear() Wait until Thread is terminating EXIT __main__
使用Python测试:3.4.2
在线演示:reply.it