多进程笔记

昨日课程回顾:算法

  编程语言的发展:编程

    机器语言:  二进制windows

    汇编语言:  指令服务器

    高级语言:  面向过程(C)  面向对象(Python)session

  操做系统的目标:并发

    为用户更方便的使用异步

 

  并行:指两件或多间事情,在同一时间点同时执行编程语言

  并发:指两件或多见事情,在同一时间间隔内同时执行操作系统

 

  计算机组成:线程

    CPU,主板,储存,输入,输出

 

  进程由三部分组成:

    代码段,数据段,PCB(进程控制块)

  

  进程的特征:

    动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
    并发性:任何进程均可以同其余进程一块儿并发执行
    独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
    异步性:因为进程间的相互制约,使进程具备执行的间断性,即进程按各自独立的、不可预知的速度向前推动


    多个不一样的进程能够包含相同的程序:一个程序在不一样的数据集里就构成不一样的进程,能获得不一样的结 果;可是执行过程当中,程序不能发生改变。

 

  进程的三个基本状态:

    就绪状态:得到了除CPU以外运行的全部资源

    执行状态:得到了全部资源,处于正在执行的状态

    阻塞状态:由于各类缘由,致使进程放弃了CPU,致使进程没法继续执行,此时进程处于内存中

 

  dos系统:    单用户单任务

  windows系统:  单用户多任务(早期的windows)

  unix系统:    多用户多任务

 

  为何要有操做系统?

    1 封装了全部硬件的接口,是用户更方便的使用

    2 对于计算机内全部资源,进行一个合理的调度和分配

 

  多进程的模块:

    multiprocessing

    process

  

  并行 : 并行是指二者同时执行,好比有两条车道,在某一个时间点,两条车道上都有车在跑;(资源够用,好比三个线程,四核的CPU )

  并发 : 并发是指资源有限的状况下,二者交替轮流使用资源,好比只有一条车道(单核CPU资源),那么就是A车先走,在某个时刻A车退出把道路让给B走,B走完继续给A ,交替使用,目的是提升效率。

  并行是从微观上,也就是在一个精确的时间片刻,有不一样的程序在执行,这就要求必须有多个处理器。
  并发是从宏观上,在一个时间段上能够看出是同时执行的,好比一个服务器同时处理多个session。

  早期单核CPU时候,没有并行的概念,只有并发(微观上串行,宏观上并行)

                     站在CPU角度看  站在人的角度看就是同时有不少任务同时执行

 

 

 

    在了解其余概念以前,咱们首先要了解进程的几个状态。在程序运行的过程当中,因为被操做系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。

  (1)就绪(Ready)状态

  当进程已分配到除CPU之外的全部必要的资源,只要得到处理机即可当即执行,这时的进程状态称为就绪状态。

  (2)执行/运行(Running)状态当进程已得到处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

  (3)阻塞(Blocked)状态正在执行的进程,因为等待某个事件发生而没法执行时,便放弃处理机而处于阻塞状态。引发进程阻塞的事件可有多种,例如,等待I/O完成(input)、申请缓冲区不能知足、等待信件(信号)等。

      

 

 

  同步:

      所谓同步就是一个任务的完成须要依赖另一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态能够保持一致。

  异步:

  所谓异步是不须要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工做,依赖的任务也当即执行,只要本身完成了整个任务就算完成了。至于被依赖的任务最终是否真正完成,依赖它的任务没法肯定,因此它是不可靠的任务序列

 

 

  from multiprocessing import Process

  获取当前进程的pid号, os.getpid()

  获取当前进程的父进程的pid号,  os.getppid()

 

 

  

  开启子进程的方式:

    1  p = Process (target = func,args=(,))

        target : 是子进程要执行的任务

        arges:是父进程给子进程传递的参数(必须是元组的形式) 

    2  自定义类,去继承Process

  进程的经常使用方法:

    (1)  start()    开启一个子进程

    (2)  join()    异步变同步(就是让父进程停留在join这句话,等待子进程执行结束,父进程在继续执行)

    (3)  is_alive()  判断进程是否还活着

    (4)  terminate()  杀死进程

  进程的经常使用属性:

    (1)  p.name =           给p进程一个名字

    (2)  p.pip      返回p进程的pid

    (3)  p.daemon=True  及那个p进程设置位守护进程.(True为守护进程,Flase为普通进程)

      守护进程的两个特色:

        守护进程会随着父进程的结束而结束

        守护进程不能再建立子进程(不能要孩子)

相关文章
相关标签/搜索