zoukankan      html  css  js  c++  java
  • 进线程对比

    进程 : 数据隔离,资源分配的最小单位,可以利用多核,操作系统调度,数据不安全,开启关闭切换时间开销大

    • multiprocessing 如何开启进程 start join
      • 进程有数据不安全的问题 Lock (抢票的例子)
      • 进程之间可以通信ipc:
        • 队列(安全) 管道(不安全)
        • 生产者消费者模型
        • 第三方工具
          • memcache
          • redis
          • rabbitmq
          • kafka
    进程之间可以通过Manager类实现数据共享(需要加锁,降低效率)
    一般情况下我们开启的进程数不会超过cpu个数的两倍
    

    线程(80%)

    • 什么是线程 :能被操作系统调度(给CPU执行)的最小单位
    • 同一个进程中的多个线程同时被CPU执行??? 可能 但是我们常用的CPython机制暂时没有CPU同时执行多线程,pypy也没有,不过JPtyhon中CPU可以同时执行多线程
    • 数据共享,操作系统调度的最小单位,可以利用多核,操作系统调度,数据不安全,开启关闭切换时间开销小

    在CPython中的多线程 - 节省io操作的时间

    • gc 垃圾回收机制 线程
    • 引用计数 +分代回收
    • 全局解释器锁的出现主要是为了完成gc的回收机制,对不同线程的引用计数的变化记录的更加精准
    • 全局解释器锁 GIL(global interpreter lock)
    • 导致了同一个进程中的多个线程只能有一个线程真正被cpu执行节省的是io操作的时间,而不是cpu计算的时间,因为cpu的计算速度非常快,大部分情况下,我们没有办法把一条进程中所有的io操作都规避掉
  • 相关阅读:
    ifelse选择结构
    Chrome插件开发进阶
    java应用线上一次故障诊断分析
    阻止保存要求重新创建表的更改
    【设计模式系列】行为型模式之Mediator模式
    C#.NET第一阶段课件下载
    Unity Animation.CrossFade Animation.Play
    Unity Resources.Load
    Unity Transform
    VS Ctrl + Shift + Q
  • 原文地址:https://www.cnblogs.com/zheng0907/p/12579932.html
Copyright © 2011-2022 走看看