进程 线程 协程

tslam / 2024-03-14 / 原文

Python进程: 在内存中运行程序的实例,具有独立的内存空间和资源,包含程序代码核数据.

  功能:可以同时执行多个任务,适用于并行计算和任务隔离

 

Python线程: 是在同一个进程内部创建的执行单元(进程中执行的一段代码),共享进程的资源和内存空间,可用于并发执行I/O密集型任务和数据共享,但受全局解释器锁(GIL)限制,不适用于利用多核进行并行计算

 

区别:

1) 创建开销上: 创建进程开销更大,因为进程需要分配独立的内存和资源,而线程共享进程的内存和资源

2) 并发上: 由于全局解释器锁GIL的存在,Python中多线程并不适用于多核处理器进行并发计算的场景.GIL限制了同时只有一个线程在解释器中执行代码.多线程在Python中主要用于I/O密集型任务,如网络请求、文件读写等

3) 资源共享上: 进程之间的内存空间是相互独立的,无法直接共享数据,需要使用进程间通信IPC机制.而线程在同一进程内共享内存空间,可以直接共享数据,但需要注意线程安全问题,并使用锁、条件变量等同步机制