Python在多线程上关闭线程

发布于 2021-01-29 16:11:54

这个问题已经在这里有了答案

有什么办法可以杀死线程吗?
(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

这一切似乎都表明,没有办法通过简单的代码来真正阻止它。你有什么建议?

关注者
0
被浏览
222
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    若要终止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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看