zoukankan      html  css  js  c++  java
  • python--线程和进程的初识

    一、进程与线程之间的关系
      1、线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。
      2、线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。

    二、进程、线程的优缺点
      进程:
        优点:同时利用多个cpu,能够同时进行多个操作
        缺点:耗费资源(重新开劈内存空间)

      线程:
        优点:共享内存,IO操作时候,创造并发操作
          1、易于调度。
          2、提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
          3、开销少。创建线程比创建进程要快,所需开销很少
        缺点:抢占资源


    结论:
      1、进程不是越多越好,理想的是cpu个数=进程个数;线程也不是越多越好,具体案例具体分析,请求上下文切换耗时。
      2、计算机中执行任务的最小单元:线程
      3、IO密集型:多线程
      4、计算密集型:多进程
      5、GIL :全局解释器锁

    三、进程的基本状态及状态之间的关系

      状态:运行、阻塞、挂起阻塞、就绪、挂起就绪

    状态之间的转换:

    (1)准备就绪的进程,被CPU调度执行,变成运行态;
    (2)运行中的进程,进行I/O请求或者不能得到所请求的资源,变成阻塞态;
    (3)运行中的进程,进程执行完毕(或时间片已到),变成就绪态;
    (4)将阻塞态的进程挂起,变成挂起阻塞态,当导致进程阻塞的I/O操作在用户重启进程前完成(称之为唤醒),挂起阻塞态变成挂起就绪态,当用户在I/O操作结束之前重启进程,挂起阻塞态变成阻塞态;
    (5)将就绪(或运行)中的进程挂起,变成挂起就绪态,当该进程恢复之后,挂起就绪态变成就绪态;

  • 相关阅读:
    Spring事务内方法调用自身事务 增强的三种方式
    SpringBoot优化内嵌的Tomcat
    Tomcat 8.0的并发优化
    Swift搭建本地http服务器,实现外部视频即时播放
    更新ruby:Error running 'requirements_osx_brew_update_system ruby-2.4.1报错解决
    iOS关于沙盒文件拷贝manager.copyItem的一个坑
    Swift udp实现根据端口号监听广播数据(利用GCDAsyncUdpSocket实现)
    iOS刻度尺换算之1mm等于多少像素理解
    Swift下的基于UIView的位置属性扩展
    iOS Main Thread Checker: UI API called on a background thread的解释
  • 原文地址:https://www.cnblogs.com/june-L/p/11795576.html
Copyright © 2011-2022 走看看