内容回顾

概念

  • 同步异步阻塞和非阻塞

    • 同步阻塞:调用一个函数需要等待这个函数的执行结果,并且在执行这个函数的过程中CPU不工作

      • inp=input('>>>')
    • 同步非阻塞:调用一个函数需要等待这个函数的执行结果,在执行这个函数的过程中CPU工作

      • ret=eval('1+2+3-4')
    • 异步非阻塞:调用一个函数不需要等待这个函数的执行结果,并且在执行这个函数的过程中CPU工作

      • start()
    • 异步阻塞:调用一个函数不需要等待这个函数的执行结果,在执行这个函数的过程中CPU不工作

      • #开启十个进程 异步的
        #获取这个进程的返回值,并且能做到哪一个进程先结束,就先获取谁的返回值。
  • 进程的三状态图

    • 就绪 ----->操作系统调度 ---->运行 ----->遇到io操作 ----> 阻塞
    • ​ ----->时间片到了 ----> 就绪
  • 进程和调度算法:短作业和长作业是有区别的,越长的作业被调度的没有短作业积极,每个io操作都会让你辛苦排队得来的执行CPU机会让给其他程序

    • 先来先服务
    • 短作业优先
    • 分时的概念
    • 多级反馈算法
  • 进程开启和关闭

    • 父进程 开启了 子进程
    • 父进程 要负责给 子进程 回收子进程结束后的资源

今日内容

Process类拾遗

  • 开启进程的另一种方法

    from multiprocessing import Process
    import os
    import time class MyProcess(Process):
    def __init__(self,a,b,c):
    self.a=a
    self.b=b
    self.c=c
    super().__init__()
    def run(self):
    time.sleep(1)
    print(os.getppid(),os.getpid(),self.a,self.b,self.c) if __name__ == '__main__':
    print('----->',os.getpid())
    for i in range(10):
    p=MyProcess(1,2,3)
    p.start()
    print(p.pid,p.ident)
    print(p.name)
    print(p.is_alive())
    p.terminate() #强制结束一个子进程
    print(p.is_alive())
    time.sleep(0.01)
    print(p.is_alive())
  • Process类的一些其他方法和属性

    • name pid daemon
  • 守护进程

    import time
    from multiprocessing import Process def son1():
    while True:
    print('in son1')
    time.sleep(1) def son2():
    for i in range(10):
    print('in son2')
    time.sleep(1) if __name__ == '__main__':
    p1=Process(target=son1)
    p1.daemon=True # 表示设置p1是一个守护进程
    p1.start()
    p2=Process(target=son2).start()
    time.sleep(5)
    print('in main')
    # 主进程会等待所有的子进程结束,是为了回收子进程的资源
    # 守护进程会等待主进程的代码执行结束后再结束,而不是等待整个主进程
    # 守护进程结束和其他子进程的结束与否无关

进程同步---lock锁

  • 抢票的时候,有人买了,票就会立刻少

进程之间通信--队列

  • 生产者消费者模式

    • 爬虫的时候
    • 分布式操作:celery
    • 本质:就是让生产数据和消费数据的效率达到平衡并最大化
    • consumer producer

进程之间的数据共享----Manager

代码总行数3047+49=3096行

python33day的更多相关文章

随机推荐

  1. 1421 最大MOD值

    1421 最大MOD值 基准时间限制:1 秒 空间限制:131072 KB  有一个a数组,里面有n个整数.现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 a ...

  2. hdu-1237简单计算器(栈的运用)

    http://acm.hdu.edu.cn/showproblem.php?pid=1237 简单的栈的运用. 首先将数字和运算符分离,分别保存在两个数组中,然后按原来的式子的顺序,首先将第一个数和第 ...

  3. HDU 6608:Fansblog(威尔逊定理)

    Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...

  4. 高并发 IO 模型

    五种IO模型包括:阻塞IO.非阻塞IO.IO多路复用.信号驱动IO.异步IO. 阻塞IO模型: 不管是网络IO还是磁盘IO,对于读操作而言,都是等到网络的某个数据分组到达后/数据准备好后,将数据拷贝到 ...

  5. opencv学习(六)——图像基本操作

    图像基本操作 一.访问和修改像素值 先来理解一下,图像与一般的矩阵或张量有何不同(不考虑图像的格式,元数据等信息).首先,一张图像有自己的属性,宽,高,通道数.其中宽和高是我们肉眼可见的属性,而通道数 ...

  6. Vue.js高效前端开发 • 【Ant Design of Vue框架基础】

    全部章节 >>>> 文章目录 一.Ant Design of Vue框架 1.Ant Design介绍 2.Ant Design of Vue安装 3.Ant Design o ...

  7. 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具

    查看本章节 查看作业目录 需求说明: 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具 实现思路: 使用history对象中的 forward() 方法和 ...

  8. gRPC创建Java RPC服务

    1.说明 本文介绍使用gRPC创建Java版本的RPC服务, 包括通过.proto文件生成Java代码的方法, 以及服务端和客户端代码使用示例. 2.创建生成代码工程 创建Maven工程,grpc-c ...

  9. Solr集群安装Version5.5.2(cloud模式)

    Solr安装cloud模式,基于Solr的安装版本为5.5.2. 安装规划 Solr IP/机器名 安装软件 运行进程 zdh-7 solr jar zdh-9 solr jar zookeeper ...

  10. MATLAB/SIMULINK生成代码错误之change the default character encoding setting

    SIMULINK点击生成C代码报错 错误提示: Error encountered while executing PostCodeGenCommand for model 'RTW_sc3': Cl ...