进程 线程 协程

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

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

 

Python线程: 是在同一个进程内部创建的执行单元,共享进程的资源和内存空间

 

Python协程: 单线程下程序层面控制任务切换实现的并发

  -使用协程,遇到io就会切换---》task1(),task2(),当task1执行中遇到io操作,程序层面切换到task2中执行

  -针对I/O密集型操作效率才高,如果是纯计算密集型,它就不切。

 

区别:

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

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

 

 

 

-cpython解释器:io密集型使用多线程,计算密集型使用多进程

 

    -io密集型,遇到io操作会切换cpu,假设你开了8个线程,8个线程都有io操作---》io操作不消耗cpu---》一段时间内看上去,其实8个线程都执行了

 

    -计算密集型,消耗cpu,如果开了8个线程,第一个线程会一直占着cpu,而不会调度到其他线程执行,其他7个线程根本没执行,所以我们开8个进程,每个进程有一个线程,8个进程下的线程会被8个cpu执行,从而效率高
 
      -I/O密集型任务,如网络请求、文件读写等

      - python有GIL锁的原因,同一个进程下多个线程实际上同一时刻,只有一个线程在执行

 

posted @   tslam  阅读(6)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2023-03-13 python 格式化千分位数字 类似会计专用格式
点击右上角即可分享
微信分享提示