守护进程
在上一遍文章中我们已经介绍了创建线程,对线程也有一些了解,现在一起来看看守护进程。
无论是进程还是线程,都遵循:守护xx会等待主xx运行完毕后被销毁。需要强调的是:运行完毕并非终止运行
1 | - 主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),然后主进程会一直等非守护的子进程都运行完毕后回收子进程的资源(否则会产生僵尸进程),才会结束。 |
举个例,设置一个主人,在设置几个仆人,这几个仆人都是为主人服务的。可以帮主人做很多事情,一个主人(主线程)可以有多个仆人(守护线程),服务的前提是,主线程必须存在,如果主线程不存在,则守护进程也没了。那守护进程是干嘛的呢?可以管理一些资源,打开一些文件,监听一些端口,监听一些资源,把一些垃圾资源回收,可以干很多事情,可以随便定义。
守护线程设置
1 | import threading |
注意:守护进程一定要在start之前设置,start之后就不能设置了,之后设置会报错,所以必须在start之前设置
统计线程数(补充点)
1 | import threading, time |
上面例子是查看当前线程和统计活动线程个数,用theading.current_thead() 查看当前线程;用theading.active_count()来统计当前活动的线程数,线程个数=子线程数+主线程数