内容回顾

概念

  • 同步异步阻塞和非阻塞

    • 同步阻塞:调用一个函数需要等待这个函数的执行结果,并且在执行这个函数的过程中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. 【LeetCode】515. Find Largest Value in Each Tree Row 解题报告(Python & C++ & Java)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 BFS DFS 日期 题目地址:https://le ...

  2. mac学习Python第二天:开发工具安装、编程方式、中文编码、syntaxError语法错误、注释、语法格式

    一.python集成开发工具Visual Studio Code安装配置 1.官网下载安装VSCode 官网地址 https://code.visualstudio.com/下载软件包 VSCode ...

  3. Implicit Neural Representations with Periodic Activation Functions

    目录 概 主要内容 初始化策略 其它的好处 Sitzmann V., Martel J. N. P., Bergman A. W., Lindell D. B., Wetzstein G. Impli ...

  4. Chapter 10 Random Variability

    目录 10.1 Identification versus estimation 10.2 Estimation of causal effects 10.3 The myth of the supe ...

  5. TGAN

    目录 概 主要内容 Saito M., Matsumoto E. & Saito S. Temporal Generative Adversarial Nets with Singular V ...

  6. Android物联网应用程序开发(智慧园区)—— 登录界面开发

    效果: 布局代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  7. Android开发案例 设置背景图片轮播

    点击按钮实现图片轮播效果 实践案例: xml <?xml version="1.0" encoding="utf-8"?> <LinearLa ...

  8. Word批量设置表格自动调整

    1.说明 通过使用Word的宏功能, 批量设置表格, 根据窗口自动调整表格, 使所有表格的宽度和窗口一样, 而不用一个一个手动调整表格. 宏是一个批量处理程序命令, 正确地运用它可以提高工作效率. 微 ...

  9. nginx rewrite 基础

    一.跳转到首页  如果请求的页面不存在的话就跳转到首页 location / {      if (!-e $request_filename){        rewrite ^/(.*) /ind ...

  10. 通过 v-once 创建低开销的静态组件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <script s ...