Python基础-守护线程

一、守护线程

1.守护线程会在“该进程内所有非守护线程全部都运行完毕后,守护线程才会挂掉”

2.主线程在其他非守护线程运行完毕后才算运行完毕(守护线程在此时就被回收)。因为主线程的结束意味着进程的结束,进程整体的资源都将被回收

3.守护线程工作原理:

守护线程一般是一个等待客户请求服务器,如果没有客户提出请求,它就在那里等。如果设定一个线程为守护线程,表示这个线程不重要,在进程退出的时候,不用等待这个线程退出

二、守护线程示例

1.只有一个子线程(也是守护线程)

①代码

import threading
import time

def run():
    print("%s线程开始..."%threading.current_thread().name)
    time.sleep(3)
    print("%s线程结束..."%threading.current_thread().name)

if __name__ == '__main__':
    print("---主线程开始---")
    # 创建一个线程,在start之前设置该线程为守护线程
    t = threading.Thread(target=run)
    t.setDaemon(True)
    t.start()
    print("---主线程结束---")

②结果

2.多个子线程

①代码

import threading
import time

def run_001():
    print("%s线程开始..."%threading.current_thread().name)
    time.sleep(3)
    print("%s线程结束..."%threading.current_thread().name)

def run_002():
    print("%s线程开始..." % threading.current_thread().name)
    time.sleep(2)
    print("%s线程结束..." % threading.current_thread().name)

def run_003():
    print("%s线程开始..." % threading.current_thread().name)
    time.sleep(2)
    print("%s线程结束..." % threading.current_thread().name)

if __name__ == '__main__':
    print("---主线程开始---",threading.current_thread().name)
    # 创建三个线程
    t1 = threading.Thread(target=run_001)
    t2 = threading.Thread(target=run_002)
    t3 = threading.Thread(target=run_003)

    t1.setDaemon(True)  # 设置t1线程为守护线程
    t1.start()
    t2.start()
    t3.start()
    print("---主线程结束---",threading.current_thread().name)

②结果

猜你喜欢

转载自blog.csdn.net/qq_39620483/article/details/87855698