zoukankan      html  css  js  c++  java
  • IO密集型 计算密集型

    参考:https://www.cnblogs.com/zhangyux/p/6195860.html

    参考:廖雪峰 协程 gevent

    IO密集型任务指的是磁盘IO或者网络IO占主要的任务,计算量很小,比如请求网页,读写文件等。===========读写文件,socker receive/send

    计算密集型任务指的是CPU计算占主要的任务,比如图形渲染中矩阵的运算(当然现在都用GPU来完成)

     

     因为协程是用户自己来编写调度逻辑的,对CPU来说,协程其实是单线程,所以CPU不用去考虑怎么调度、切换上下文,这就省去了CPU的切换开销,所以协程在一定程度上又好于多线程。

    gevent是基于IO切换的协程,使用gevent,可以获得极高的并发性能,但gevent只能在Unix/Linux下运行,在Windows下不保证正常安装和运行。

    Python通过yield提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持。

    gevent是第三方库,通过greenlet实现协程,其基本思想是:

    当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我们自动切换协程,就保证总有greenlet在运行,而不是等待IO

  • 相关阅读:
    Eclipse中的Web项目自动部署到Tomcat
    Linux之grep命令
    Linux之sort
    Python 字典中一键对应多个值
    手动下载python更新后 换回以前版本
    N个降序数组,找到最大的K个数
    蓄水池抽样算法
    空瓶子换水问题
    rand()产生随机数 及其和clock()的不同
    C++复数运算 重载
  • 原文地址:https://www.cnblogs.com/testzcy/p/10139196.html
Copyright © 2011-2022 走看看