zoukankan      html  css  js  c++  java
  • Python进程、线程

    • Lock & RLock :用来确保多线程多共享资源的访问。
    • Semaphore : 用来确保一定资源多线程访问时的上限,例如资源池。
    • Event : 是最简单的线程间通信的方式,一个线程可以发送信号,其他的线程接收到信号后执行操作。

    我们知道,在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。

    使用多线程的理由之二是线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。当然,数据的共享也带来其他一些问题,有的变量不能同时被两个线程所修改,有的子程序中声明为static的数据更有可能给多线程程序带来灾难性的打击,这些正是编写多线程程序时最需要注意的地方。

    进程定义

    计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。进
    程是一个具有独立功能的程序关于某个数据集合的一次运行活动。狭义来说:进程就是程序的执行过程。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,
    通过程序计数器的值和处理寄存器的内容来表示。


    第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、

    数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和

    进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“

    执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我

    们称其为进程

    三种运行状态

    进程可能具有以下三种基本状态:
    一、就绪状态(Ready):
    进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按

    多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由

    I/O操作完成而进入就绪状态时,排入高优先级队列。
    二、运行状态(Running):
    进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有

    进程都在阻塞状态),通常会自动执行系统的空闲进程。
    三、阻塞状态(Blocked):
    由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理机分配给该进程,也无法运行。

    进程与线程的区别:

    线程线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线

    程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情

    况而定。线程的运行中需要使用计算机的内存资源和CPU。
    通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都

    是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基

    本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的

    程度,从而显著提高系统资源的利用率和吞吐量。
    1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

  • 相关阅读:
    获取网页可视区域的宽高,不包括工具栏和滚动条(浏览器窗口可视区域大小)
    display:inline-block 来解决盒子高度不一样,造成的盒子浮动
    Jquery UI 中的datepicker() ,获取日期后的回调函数onClose()
    删除url搜索带的参数
    判断表单是否需要校验时可以按照类似逻辑去处理
    去除url中锚点的方法
    js常面试基础题
    vue项目总结
    vue-router
    回流与重绘
  • 原文地址:https://www.cnblogs.com/wspblog/p/5882354.html
Copyright © 2011-2022 走看看