Python 并发编程:线程详解

在 Python 中,默认每个 Python 文件会创建一个进程,用于提供运行资源和环境。进程启动后,会创建一个主线程,用于执行程序代码。

线程是并发编程的核心之一,本文将详细解析 Python 中线程的基础概念、常见操作、线程安全以及线程池的使用。


一、线程基础

1. 什么是线程?

线程是计算机中可以被 CPU 调度的最小单位。每个线程在程序中独立运行,多个线程可以并发执行。在 Python 中,线程由 threading 模块提供支持。


2. 创建线程

Python 提供了非常简单的方式来创建线程,可以通过 threading.Thread 类来定义和启动线程。

示例:创建一个线程

import threading

def func(a1, a2, a3):
    print(f"Arguments received: {
     a1}, {
     a2}, {
     a3}")

# 创建线程并传入目标函数和参数
t = threading.Thread(target=func, args=(11, 22, 33))
t.start()  # 启动线程
t.join()   # 等待线程完成

二、多线程开发

在多线程编程中,主线程从上到下执行代码。当需要创建子线程时,主线程会调用子线程并继续向下执行。如果程序运行结束前子线程未完成任务,主线程会进入等待状态,直到所有子线程执行完毕。

1. 线程的常见方法

以下是线程对象的一些常用方法:

  1. t.start()
    启动线程,使其进入就绪状态,等待 CPU 调度。线程的执行时间由操作系统决定。

  2. t.join()
    主线程等待当前线程执行完毕后再继续执行后续代码。通常用于保证线程的同步。

  3. t.setDaemon(布尔值)
    设置线程的守护状态:

    • True:设置为守护线程,当主线程结束时,子线程会自动退出。
    • False(默认):设置为非守护线程,主线程会等待子线程完成后再退出。
  4. 线程名称的设置和获取
    可以通过 name 参数设置线程名称,或使用 threading.current_thread().name 获取当前线程的名称。

示例:线程名称

import threading

def my_func():
    print('Thread name is', threading.current_thread().name)

# 创建线程并设置名称
my_thread = threading.Thread(target=my_func, name='MyThread')
my_thread.start()

2. 自定义线程类

可以通过继承 threading.Thread 类,自定义线程行为,将线程需要执行的逻辑写入 run() 方法中。

示例:定义一个自定义线程类

import threading
import
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值