并发编程[Python基础]

并发编程

1、多道技术(基于单核背景下产生)

  单道:指的是一条道路走到黑  –>  串行

    比如:a,b需要使用cpu,a先试用,b等待a使用完成后,b才能使用cpu

 

  多道:一条道路分配走

    比如:a,b需要使用cpu,a先使用,b等待a,直到a进入“IO或执行时间过长”,a会(切换+保存状态),然后b可以使用cpu,待b执行遇到“IO或执行时间过长”,再将cpu执行权限交给a,直到两个程序结束

    空间上的复用:(*******)

      多个程序使用一个cpu

 

    时间上的复用:(*******)

      切换 + 保存状态

 

      1.当执行程序遇到IO时,操作系统会将cpu的执行权限剥夺

        优点:

          cpu的执行效率提高

      2.当执行程序遇到执行时间过长时,操作系统会将cpu的执行权限剥夺

        缺点:

          程序的执行效率低

 

 

2、并发与并行

  并发:在单核(1个cpu)情况下,当执行a,b两个程序时,a先执行,当a遇到IO时,b开始争抢cpu的执行权限,再让b执行。看起来像同时运行

  并行:在多核(多个cpu)情况下,当执行a,b两个程序时,a,b同时执行,他们是真正意义上的同时运行

 

 

3、进程

(1)什么是进程

  进程是一个资源单位

 

(2)进程与程序

  程序:一堆代码文件

  进程:执行代码的过程,称之为进程

 

(3)进程调度(了解)

  ① 先来先服务调度算法

    比如程序 a,b,若a先来,则先让a先服务,待a服务完毕后,b再服务

    缺点:

      执行效率低

 

  ② 短作业优先调度

    执行时间越短,则先调度

    缺点:

      导致执行时间长的程序,需要等待所有时间短的程序执行完毕后,才能执行

 

  现代操作系统的进程电镀算法: 时间片轮转法 + 多级反馈队列(知道)

 

  ③ 时间片轮转法

    比如同时有10个程序需要执行,操作系统会给你10秒,然后时间片轮转法会将10秒分成10等份。

  ④ 多级反馈队列

    1级别队列:优先级最高,先执行此队列中的程序

    2级别队列:优先级以此类推

    3级别队列:…

 

 

4、同步与异步

  同步与异步指的是 “提交任务的方式”

 

  同步(串行):

    两个a,b程序都要提交并执行,假如a先提交执行,b必须等a执行完成后,b才能提交任务

  异步(并发):

    两个a,b程序都要提交并执行,假如a先提交执行,b无需等a执行完成,就可以直接提交任务

 

 

5、阻塞与非阻塞

  阻塞:

    凡是遇到IO操作都会阻塞

    IO操作:

      input()

      output()

      time.sleep()

      文件的读写

      数据的传输

 

  非阻塞(不等待):

    只要不遇到IO阻塞,其他都是非阻塞(比如计算从1到100万的和)

 

 

6、进程的三种状态

  就绪态:

    同步和异步

 

  运行态:程序的运行时间过长 —> 会将程序返回给就绪态

    非阻塞

 

  阻塞态:

    遇到IO操作

 

 

7、进程的两种创建方式(代码)

  方式1:直接调用Process类

  例1:

import time
from multiprocessing import Process


def task():    # 任务
    print("start...")
    time.sleep(3)
    print("end...")

if __name__ == "__main__":

    # target=任务(函数地址) ---> 创建一个子进程
    p_obj = Process(target=task)
    # 告诉操作系统去创建一个子进程
    p_obj.start()
    # 告诉主进程,等待子进程结束后,再执行主进程
    p_obj.join()

    print("正在执行当前主进程")
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 并发编程