python并发处理区别(线性池、async异步、分布式等)

  1. 顺序(for loop)
  • 最简单,易于调试。适用于文件少或需要严格顺序处理场景。
  1. multiprocessing / ProcessPoolExecutor(多进程)
  • 适合 CPU 密集型任务(可以利用多核)。
  • 代价:进程启动/通信开销、需要序列化(pickling)函数参数/结果,某些对象不可序列化(如打开的 socket)。
  • 在 notebook 中直接使用可能需要 if name == “main” 保护,或把逻辑放到脚本中运行。
  1. asyncio + aiohttp / 异步 I/O
  • 适合大量并发、轻量级的 I/O(例如同时对许多服务器发请求)。
  • 优点:在高并发 HTTP 请求场景下能更省内存,比线程更高效。
  • 缺点:需要将代码改为 async/await 风格,第三方库需要异步版本(requests → aiohttp)。
  1. 分布式 / 任务队列(Celery, RQ, Kafka 等)
  • 当任务量非常大或需要持久化/重试/可观察性时,使用队列把任务分发到 worker 集群。
  • 生产级方案,代价是更多基础设施。
  1. 子进程 / 外部程序
  • 把 PDF 解析或 OCR 放到单独进程或容器里,Python 只是调度。
  1. 线程池 + 限速 + 重试(常见组合)
  • 对外部 API 做批量请求时通常需要限速(避免被封)、重试与超时控制。