Python创建多线程的两种常用方法总结

许南星
许南星
发布时间:2026-10-12 | 2人浏览过
原创

本文详细介绍在 Python 中创建多线程的两种核心方式:基于函数的 target 参数指定法与基于类的继承重写法。文中完整列举了 Thread 对象的关键操作方法,涵盖启动、阻塞等待、状态检测及守护进程设置,帮助开发者快速掌握 Python 并发编程的基础实现流程。

环境准备与核心模块说明

Python 内置的 threading 模块是处理多线程的标准工具。创建线程前需确保导入该模块,并明确线程执行的入口逻辑。以下将按操作类型分别演示具体写法。

方法一:通过 target 参数指定函数

第一步:定义目标函数

创建一个独立运行的 Python 函数,该函数将作为后台线程的实际执行体。注意函数声明时不要直接调用(即不加括号)。

第二步:实例化 Thread 并绑定参数

  • 目的:将自定义函数映射到新的线程实例上。
  • 入口:新建脚本文件并引入标准库。
  • 关键参数:target 接收无括号的函数名;args 接收参数字典或元组(单元素元组末尾需加逗号防止被解析为普通变量)。
import time
from threading import Thread

def target_task(name="Python"):
    for i in range(2):
        print("hello", name)
        time.sleep(1)

t1 = Thread(target=target_task)
t2 = Thread(target=target_task, args=("MING",))

第三步:调用 start 启动执行

向线程对象发送启动指令,操作系统调度器会将该线程加入就绪队列。此时两个子线程将并发打印文本。

t1.start()
t2.start()

方法二:继承 Thread 类复写 run 方法

第一步:构建继承类并完成初始化

当线程需携带自定义状态或多阶段数据时,推荐使用面向对象封装。继承 threading.Thread 后,必须在 __init__ 首行调用 super().__init__() 以正确建立底层线程结构。

第二步:重载 run 方法写入业务逻辑

重写 run 方法,所有需要在线程上下文中运行的代码均放置于此。start 被调用时,底层会自动执行 run 方法的内容。

第三步:实例化对象并启动线程

通过自定义类直接实例化即可传入所需参数,随后同样使用 start 触发运行。

import time
from threading import Thread

class CustomThread(Thread):
    def __init__(self, mode="Python"):
        super().__init__()
        self.mode = mode

    def run(self):
        for i in range(2):
            print("hello", self.mode)
            time.sleep(1)

if __name__ == '__main__':
    t1 = CustomThread()
    t2 = CustomThread(mode="MING")
    t1.start()
    t2.start()

掌握线程生命周期控制方法

线程启动后,通常需要通过对象方法协调主线程与子线程的节奏。以下是生产环境中高频使用的控制接口:

# t 为已创建的 Thread 实例对象

t.start()          # 唤醒子线程进入就绪态
t.join()           # 阻塞当前调用线程,直到 t 执行完毕(用于同步)
t.is_alive()       # 检测线程是否存活(旧版 API 为 isAlive())

t.daemon = True    # 设为守护线程:主线程退出时强制结束该子线程(默认 False)
t.name = "Worker-1"# 自定义线程名称,便于日志追踪与调试

注意事项与排错参考

在实际拼接多线程程序时,需留意常见陷阱:
1. args 传参时若仅包含单个值,必须写成元组格式如 (value,),否则将引发 TypeError。
2. join() 会挂起调用者,若在循环中连续对多个线程调用 join(),线程将退化为串行执行而非并行。
3. 多线程共享全局变量时极易产生竞态条件,涉及并发读写务必搭配锁机制或队列进行隔离。

以上就是 Python 创建多线程的两种常用方法的详细内容,更多关于 Python 并发编程与线程控制的相关资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表