编辑
2025-06-26
Python
00

目录

线程
进程
协程
总结

线程

python中一般使用threading和concurrent.futures.ThreadPoolExecutor

定义: 线程是操作系统调度的基本单位,是进程中的一个执行路径。一个进程可以包含多个线程,它们共享进程的内存空间。

特点:

共享内存: 线程共享进程的内存空间,可以方便地共享数据。 轻量级: 创建和销毁线程的开销比进程小。 并发执行: 在多核处理器上,多个线程可以并发执行。 适用场景:

I/O 密集型任务: 适合处理需要等待外部设备响应的任务,如网络请求、文件读写。 需要共享数据: 适合需要多个执行路径共享数据的场景。

进程

python中一般用multiprocessing和concurrent.futures.ProcessPoolExecutor

定义: 进程是操作系统分配资源的基本单位,每个进程都有独立的内存空间。进程之间的通信需要通过进程间通信(IPC)机制。

特点:

独立内存空间: 进程之间不共享内存,数据隔离性好。 较重: 创建和销毁进程的开销较大。 真正并行: 在多核处理器上,多个进程可以真正并行执行。 适用场景:

CPU 密集型任务: 适合需要大量计算的任务,因为可以利用多核处理器的能力。 需要隔离: 适合需要数据隔离的场景,避免共享内存带来的复杂性

python
import multiprocessing import math def compute_factorial(n): return math.factorial(n) def main(): numbers = [100000, 200000, 300000, 400000, 500000] # create processing pool with multiprocessing.Pool(processes=multiprocessing.cpu_count()) as pool: # map parallel computing results = pool.map(compute_factorial, numbers) for number, result in zip(numbers, results): print(f'Factorial of {number} is calculated.') if __name__ == '__main__': main()

协程

python中一般用asyncio和aiohttp

定义: 协程是一种用户态的轻量级线程,由程序自身调度。协程允许在执行过程中暂停和恢复,通常用于异步编程。

特点:

轻量级: 协程的创建和销毁开销非常小。 非抢占式调度: 协程由程序显式调度,而不是由操作系统调度。 单线程执行: 协程通常在单线程中执行,避免了线程切换的开销。

适用场景:

异步 I/O: 适合处理大量并发 I/O操作,如网络请求、数据库查询。 高并发: 适合需要处理大量并发任务的场景,尤其是在 I/O 密集型任务

总结

  • 线程: 适合需要共享数据的 I/O 密集型任务。
  • 进程: 适合需要数据隔离的 CPU 密集型任务。
  • 协程: 适合异步 I/O和高并发场景,尤其是在单线程环境

本文作者:lixf6

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!