多进程、多线程和协程

简单理解一下这三个东西!

多进程:

一个程序加用到的资源称之为进程,它是操作系统分配资源的基本单位,每个进程都有一个GIL锁,它有自己独立的内存空间,资源消耗大。

多线程:

多线程并不是真正意义上的多任务,因为进程有GIL锁的存在,线程执行前要先获得GIL锁才可以执行,执行代码直到sleep或者python虚拟机将其挂起,释放GIL锁,线程进行锁竞争,切换线程,会消耗资源,并且由于GIL锁的存在,一个进程永远只有一个线程被执行,因为要获得GIL锁才可以执行。虽然是这样,并不是说多线程没用,像IO密集型代码(文件处理、网络爬虫等),多线程能够有效提升效率(单线程下有IO操作会进行IO等待,造成不必要的时间浪费,如果开启了多线程,那么线程A在等待时,会切换到线程B,可以不浪费CPU的资源,从而提升程序执行的效率),如果对于CPU密集型多线程反而是鸡肋。

多核CPU可以开多进程充分利用CPU的效率,每个进程再开多线程,节约IO等待时间。

协程:

依赖于线程存在的,利用线程在等待某个资源的时候去执行其他的函数,像多线程实现的下载器,一边在下载文件一边在保存文件,此时线程就卡在下载这,这时候就可以利用协程,你在等待的时间,我去执行别的函数,协程一般用gevent模块。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 进程是cpu资源分配的最小单位,线程是cpu调度的最小单位。以前进程既是资源分配也是调度的最小单位,后来为了更合理...
    nine_9阅读 3,821评论 0 1
  • 目录 一、开启线程的两种方式 在python中开启线程要导入threading,它与开启进程所需要导入的模块mul...
    CaiGuangyin阅读 7,032评论 1 16
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 9,669评论 0 23
  • 嘿嘿,还好今天继续早起了,继续画禅绕画素材,发现一个不太擅长的了,需要请教小伙伴了! 早晨大都市会有这么多小鸟儿叫...
    bobo啊bobo阅读 1,274评论 0 1
  • 三大循环:for; while; do while;
    Cookie_hunter阅读 1,450评论 0 0

友情链接更多精彩内容