zoukankan      html  css  js  c++  java
  • IO多路复用和协程

    1、IO多路复用

      作用:检测多个socket是否已经发生变化(是否连接成功/是否已经获取数据)

    什么是进程、线程、协程以及它们的区别?

    进程是资源分配的最小单元,其作用是进行数据隔离,

    线程是cpu调度的最小单元,其作用主要是执行某个任务,

    一个应用程序可以有多个进程,一个进程可以有多个线程,在其他语言中几乎很少用进程,都是用多线程,而对于python来说,IO操作主要是用多线程实现,计算密集型操作主要是用多进程实现,主要原因是python中存在GIL锁,GIL锁的作用就是保证一个进程中同一时刻只有一个线程被cpu调度,所以在python中想要利用cpu的多核优势就是开多个进程。

    在后来程序员级别的人为了让代码更牛逼,创建了一个东西叫协程,

    协程这个东西本身不存在,是程序员自己创造出来的,协程可以对代码的执行顺序进行控制,本身这个东西存在没有意义,但是协程要是和 IO切换放在一起就了不得了,遇到 IO操作就切换,相当于把一个线程分片,所达到的效果是线程一直没有停,一直在工作,

    这就是进程、线程、协程的本质区别。

    在python中用协程的时候会有一个模块叫greenlet,协程加IO自动切换的模块叫gevent。

  • 相关阅读:
    Web 存储之localStorage
    webpack之font-awesome
    vue-cli快速构建vue项目
    npm与cnpm混用导致的问题
    错误:linker command failed with exit code 1 (use -v to see invocation)
    mac 显示隐藏文件
    iOS 不要使用tag传递TableViewCell的indexPath值
    iOS background location
    github+hexo 搭建个站
    iOS CoreBluetooth
  • 原文地址:https://www.cnblogs.com/shanae/p/9642519.html
Copyright © 2011-2022 走看看