如何退出运行线程的Python程序?

如何退出运行线程的Python程序?,python,multithreading,exit,Python,Multithreading,Exit,我正在写一些简单的代码,我使用Pygame来绘制图形,我有一个线程来绘制所有东西。当我调用sys.exit()或只调用ctrl+c时,主程序将退出,但线程似乎仍然处于活动状态。我想我需要在这之前把它关掉。我该怎么做 例如: import threading class Bla(threading.Thread): def run(self): print "I draw here" Bla().start() while True: if user_wan

我正在写一些简单的代码,我使用Pygame来绘制图形,我有一个线程来绘制所有东西。当我调用sys.exit()或只调用ctrl+c时,主程序将退出,但线程似乎仍然处于活动状态。我想我需要在这之前把它关掉。我该怎么做

例如:

import threading

class Bla(threading.Thread):
    def run(self):
        print "I draw here"

Bla().start()

while True:
     if user_wants_to_end:
         sys.exit()

当我真的想退出时,程序不会退出!如何关闭线程?

所有非守护进程线程完成后,Python程序将退出

class Bla(threading.Thread):
    daemon = True # Make the thread daemon
    def run(self):
        print "I draw here"

这看起来像一个复制品;你可能想寻求一些帮助。“简单代码”和“线程”在同一句话中?Tsk,Tsk。不要使用多线程,因为这似乎是一个好主意,在您实际需要时使用它。此程序不会准确显示您的问题,因为它会很快退出。但是,如果在
run()
方法中添加类似
time.sleep(1000000)
的内容,则可以说明这个问题。请检查一个全局标志或在退出时发出信号的内容。作为参考:“当没有活动的非守护进程线程时,整个Python程序将退出。”(线程模块文档)。有没有一种方法可以要求线程从主程序终止,而不在线程代码中专门处理这个问题?我很确定答案是否定的。要么使用进程(请参阅muliprocessing),要么在线程代码中显式检查(通常使用事件)。