
博客导语Python多线程是IO密集任务最优解之一新手最容易踩的坑主线程提前退出、子线程乱序执行、不知道join阻塞原理。本文手把手讲解线程两种创建方式、守护线程、线程等待、执行顺序底层机制。一、线程创建两种标准方式1. 函数式创建简单任务首选import threading import time def task(name): print(f子线程 {name} 开始执行) time.sleep(2) print(f子线程 {name} 执行结束) if __name__ __main__: t1 threading.Thread(targettask, args(线程1,)) t2 threading.Thread(targettask, args(线程2,)) t1.start() t2.start()2. 类继承创建复杂任务首选class MyThread(threading.Thread): def __init__(self,name): super().__init__() self.name name def run(self): print(f子线程 {self.name} 运行) time.sleep(2) t MyThread(自定义线程) t.start()二、线程核心方法start()创建并启动线程只能调用一次run()线程真正执行逻辑不启动线程join()主线程阻塞等待子线程结束is_alive()判断线程是否存活三、线程等待 join() 关键原理默认情况下主线程不会等待子线程主线程执行完毕会直接退出程序。join() 会阻塞主线程直到子线程执行完毕。t1.start() t1.join() # 主线程等待 t1 结束再往下走 print(主线程结束)四、守护线程 daemon守护线程主线程退出守护线程强制退出不阻塞程序结束。日志、心跳线程常用。t threading.Thread(targettask, daemonTrue)五、线程执行无序性线程由操作系统调度执行顺序随机无法人为控制这也是线程安全问题的根源。