zoukankan      html  css  js  c++  java
  • 并发总结

    并发总结:

       并发的定义,能不能同时服务多个客户端

       其实,以后做并发可以从三个思路出发,三种技术

    一    进程并行,只能开到CPU个数进程,但是它能用来处理计算型(cpu密集型)的任务    # 开销大

    二    如果并行不是必须的,那么是否可以考虑用并发来代替?(IO密集型)    # 线程,单位开销比进程小很多

      因为线程中的并发是轮询调度,遇到阻塞就切换

      只要是网络,一定有延迟,有延迟一定有阻塞

        由于全局解释器锁的存在,在进行多线程操作的时候,不能调用多个CPU内核,只能利用一个内核,

      所以在进行CPU密集型操作的时候,不推荐使用多线程,更加倾向于多进程。那么多线程适合什么样的应用场景呢?

      对于IO密集型操作,多线程可以明显的提高效率,例如Python爬虫的开发,

      绝大多数时间爬虫是在等待socket返回数据,网络IO的操作延时比CPU大得多。

    三   如果轮询调度也不是必要的,那么是否可以考虑只要阻塞来切换

      使用IO多路复用 + 协程来实现阻塞切换(并发量最高)

      函数变成协程,函数本身就几行代码,所以消耗少

      协程需要用户自己来编写调度逻辑,对于CPU的切换来说,协程是单进程,所以CPU不用

    去考虑怎么调度、切换上下文,这就省去了CPU的切换开销,所以协程在一定程度上又好于多线程。

    没有十全十美的技术,我们要按照我们的实际需求看具体用什么技术

  • 相关阅读:
    CSS实例:图片导航块
    导航,头部,CSS基础
    web基础,用html元素制作web页面
    web基础
    timestamp与timedelta,管理信息系统概念与基础
    datetime处理日期和时间
    中文词频统计
    文件方式实现完整的英文词频统计实例
    当你发现任务管理器打不开
    恶搞关机
  • 原文地址:https://www.cnblogs.com/pywjh/p/9516996.html
Copyright © 2011-2022 走看看