内容回顾

概念

  • 同步异步阻塞和非阻塞

    • 同步阻塞:调用一个函数需要等待这个函数的执行结果,并且在执行这个函数的过程中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】739. Daily Temperatures 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 倒序遍历 栈 日期 题目地址:https://leetcode ...

  2. 【LeetCode】865. Smallest Subtree with all the Deepest Nodes 解题报告(Python & C++)

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

  3. 【LeetCode】706. Design HashMap 解题报告(Python)

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

  4. 【剑指Offer】从上往下打印二叉树 解题报告(Python)

    [剑指Offer]从上往下打印二叉树 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  5. Adaptive gradient descent without descent

    目录 概 主要内容 算法1 AdGD 定理1 ADGD-L 算法2 定理2 算法3 ADGD-accel 算法4 Adaptive SGD 定理4 代码 Malitsky Y, Mishchenko ...

  6. 使用Xcode 制作自定义storyboard启动界面,供uniAPP使用。

    1新建项目 想要全屏显示并适应所有尺寸的iPad和iphone 需要用750*1624 2X 和 1125 * 2436 3X大小的图片 这里做完就可以导出文件了 把文件和图片放到一起 见下图 命名规 ...

  7. <数据结构>XDOJ316.多点测试的写法

    问题与解答 问题描述 有一棵无限大的完全二叉树,该二叉树自上而下.自左而右从1开始编号.从某一个结点到根结点(编号是1的结点)都有一条唯一的路径,比如从5到根结点的路径是(5, 2, 1),从4到根结 ...

  8. 【jvm】06-new一个对象到底占了多少内存?

    [jvm]06-new一个对象到底占了多少内存? 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请顺 ...

  9. C#读取注释的方法

    友好的注释能提高代码的可读性,几乎所有的编程语言都支持注释. 在C#中,注释不是可执行代码的一部分,因此注释不会被编译到程序集中去,但是我们可以提取注释[右键项目]-[属性]-[生成]-[输出]-[X ...

  10. golang 算法题 : 两数相加

    package mainimport "fmt"type ListNode struct { Val int Next *ListNode}func main() { l1 := ...