python图形界面多线程关闭问题
多线程
一个程序对应一个进程,但是一个进程可以对应多个线程。
我们平时在做图形界面的时候,经常会遇到处理一些耗时操作,比如请求接口或者进行一些复杂运算。这个时候我们就可以将前端界面UI设置为主线程,处理复杂的业务逻辑的事情交给子线程处理。
使用线程方法
import threading
def func_1():
while True:
print("子线程")
if __name__ == "__main__":
print("主线程")
t1 = threading.Thread(target=func_1)
t1.start()
如果命令行执行这个程序的话,你会发现即使ctrl+c关闭了主线程,子线程依然在执行,这个在UI程序里面对应的就是界面关闭了,后台还在运行程序,我们需要做的就是将子线程守护到主线程上,也就是将子线程设置成守护进程,一旦主线程销毁,它也会销毁。
import threading
def func_1():
while True:
print("子线程")
if __name__ == "__main__":
print("主线程")
t1 = threading.Thread(target=func_1)
t1.setDaemon(True)
t1.start()
线程中的常用方法
- start 执行线程,执行的是线程中的run方法
- run 线程实际运行的方法
- is_alive 判断线程是否存活,
- join 将子进程加入到主线程队列中,也就是说主线程关闭之后会阻塞,直到所有join队列中的线程执行完毕。
评论已关闭!