zoukankan      html  css  js  c++  java
  • 面试概念题

    进程、线程、协程的区别?

    进程:计算机用来分配资源的最小单元,本质上是用来处理数据隔离的。

    线程:cpu用来计算的最小单元,线程是真正用来做事的。

    一个进程可以有多个线程。一个应用程序可以有多个进程。但是因为Python特有的GIL锁的缘故,造成了它和Java等语言多线程的差异,

    在同一时刻,一个进程中只有一个线程能被cpu调度。所以在处理计算密集型数据时,需要开多进程来获取高效率。

    在处理io密集型数据时,可以使用多线程提高效率。因为io操作不占用cpu线程。

    GIL锁控制进程,本质上就是对Python的底层C语言上锁了。

    协程:其实就是微线程。对线程进行切片,在不同的时间,对多个线程片进行调度,遇到io操作,就去执行其他操作。当io操作的处理结果回来后,会切换回去。

    协程本身是不存在的,是程序员为了达到控制代码的执行块而产生的。Python实现协程的模块greenlet ,实现协程+IO操作可以用模块gevent

    单线程实现并发:

    协程+IO切换 :模块gevent 

    基于事件循环的IO非阻塞框架:Twisted

  • 相关阅读:
    Vue.js + Flask + echarts + MySQL
    一次挖矿处理
    Docker三剑客之Docker Swarm
    Malleable-C2-Profiles配置
    「持续更新中」最近浏览的网站心得总结
    有关虚拟内存的一点思考
    Qt---ToolBox自由伸展
    mindmaster导出markdown文档
    svg代码嵌入秀米的方法
    css3渐变透明度的写法
  • 原文地址:https://www.cnblogs.com/wen-kang/p/11298727.html
Copyright © 2011-2022 走看看