🧠 并发编程简介

在现代软件开发中,并发编程是提升程序性能的关键技术。通过合理利用多核CPU和I/O操作,可以显著优化程序的执行效率。Python 提供了多种实现并发的手段,包括:

  • 📌 多线程(Threading):适合I/O密集型任务,如网络请求或文件读写
  • 📌 多进程(Multiprocessing):适用于CPU密集型任务,可充分利用多核
  • 📌 异步编程(Asyncio):通过事件循环实现非阻塞I/O操作
  • 📌 并发模型(Concurrent.futures):简化线程/进程池的使用

📚 想深入了解多线程实现?点击 多线程教程 查看详细说明

🧩 核心概念解析

🌐 线程与进程的区别

特性 线程 进程
资源开销
通信效率 高(共享内存) 低(需IPC)
上下文切换

📈 并发 vs 并行

  • 🔄 并发:单核CPU下通过任务切换实现"同时"执行
  • 🔄 并行:多核CPU下真正同时执行多个任务

📌 了解更详细的并发模型对比?查看 并发模型详解

📌 实践示例

🧪 多线程实现

import threading

def worker():
    print("线程运行中...")

threads = [threading.Thread(target=worker) for _ in range(5)]
for t in threads:
    t.start()

🧪 异步编程示例

import asyncio

async def count(name, n):
    print(f"{name} 正在计数...")
    for i in range(1, n+1):
        print(i)
    print(f"{name} 完成计数")

async def main():
    await asyncio.gather(count("A", 3), count("B", 5))

asyncio.run(main())

🎨 有关线程的可视化示例:

线程

⚠️ 注意事项

  1. ⚠️ GIL限制:Python的全局解释器锁会影响多线程的并行性能
  2. ⚠️ 死锁风险:多线程编程需注意锁的获取顺序
  3. ⚠️ 资源竞争:共享资源访问需使用锁或原子操作
  4. ⚠️ 异步 vs 多线程:选择合适的技术取决于具体场景

🎨 关于异步编程的示意图:

异步编程

🌐 扩展学习

🎨 有关并发模型的思维导图:

并发模型