当前位置:首页>python>Python:多线程 简单示例

Python:多线程 简单示例

  • 2026-10-11 07:40:22
Python:多线程 简单示例
关注+星标,每天学习Python新技能

来源:网络

在 Python 中,多线程编程通常用于执行 I/O 密集型任务,因为 Python 的全局解释器锁(GIL)限制了多线程在 CPU 密集型任务上的性能提升。不过,对于需要同时处理多个 I/O 操作(如网络请求、文件读写等)的场景,多线程仍然非常有用。

Python 的threading 模块提供了创建和管理线程的基本工具。以下是一个简单的示例,展示了如何使用 threading 模块来创建和启动多个线程:

import threadingimport time# 线程执行的函数def worker(thread_id, delay):print(f"线程 {thread_id} 开始工作,延迟 {delay} 秒")    time.sleep(delay)print(f"线程 {thread_id} 完成工作")# 创建线程列表threads = []# 启动多个线程for i in range(5):    thread = threading.Thread(target=worker, args=(i, 2))  # 创建一个线程对象    threads.append(thread)    thread.start()  # 启动线程# 等待所有线程完成for thread in threads:    thread.join()print("所有线程已完成")

在这个示例中,我们定义了一个简单的 worker 函数,该函数接受线程 ID 和延迟时间作为参数,模拟线程的工作。然后,我们创建了 5 个线程,每个线程都会调用 worker 函数,并传入不同的参数。最后,我们使用 join() 方法等待所有线程完成。

线程同步

多线程编程中,线程同步是一个重要问题。如果不加以控制,多个线程可能会同时访问共享资源,导致数据竞争和不一致。Python 的 threading 模块提供了多种同步机制,如锁(Lock)、信号量(Semaphore)、条件变量(Condition)等。

以下是一个使用锁的示例:

import threading# 共享资源counter = 0lock = threading.Lock()# 线程执行的函数defincrement():global counterfor _ in range(100000):        lock.acquire()  # 获取锁        counter += 1        lock.release()  # 释放锁# 创建线程列表threads = []# 启动多个线程for _ in range(10):    thread = threading.Thread(target=increment)    threads.append(thread)    thread.start()# 等待所有线程完成for thread in threads:    thread.join()print(f"最终计数器值: {counter}")

在这个示例中,我们使用了一个锁来保护对共享资源 counter 的访问。每个线程在修改 counter 之前都会先获取锁,修改完成后释放锁。这样可以确保同一时间只有一个线程能够访问 counter,从而避免了数据竞争。

注意事项

全局解释器锁(GIL):Python 的 GIL 限制了多线程在 CPU 密集型任务上的性能提升。对于这类任务,可以考虑使用 multiprocessing 模块来创建多个进程,每个进程都有自己的 Python 解释器和内存空间,从而绕过 GIL 的限制。

线程安全:确保线程访问共享资源时是线程安全的,可以使用锁、信号量等同步机制。

死锁:不当使用锁可能会导致死锁问题,即多个线程相互等待对方释放锁,从而永远无法继续执行。要避免死锁,需要确保每个线程都能按照相同的顺序获取锁。

性能开销:创建和销毁线程是有开销的,不要频繁创建和销毁线程。可以使用线程池(如 concurrent.futures.ThreadPoolExecutor)来重用线程。

通过合理使用多线程编程,可以显著提高程序的并发性能和响应速度。然而,也需要注意多线程编程带来的复杂性和潜在问题。

长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等

▲扫描二维码-免费领取

推荐阅读

彻底解决Python3: No module named 问题

Python 异步调试神器:必须掌握的 3 个核心工具

Python3.15 在 Windows x86-64上的解释器有望提速 15%

CuPy - 将 Numpy 提速 700 倍的神器!

点击 阅读原文了解更多

最新文章

随机文章