zoukankan      html  css  js  c++  java
  • day33

    并发编程

    #udp不可靠的原因,当数据一旦发送到网络中后,会立即删除缓存中的数据
    #tcp可靠的原因, 发送数据以后,会等待对方确认,如果没有确认信息,数据就会一直存在于缓存中,知道对方确认或者超时
    #进程:一个正在被运行的程序称为进程,程序的执行过程,进程是一个抽象概念
        # 进程源于操作系统

    '''
    多进程
      阻塞:程序进入了I/O操作,就进入了阻塞状态
      非阻塞:程序正常的运行,没有晕倒任何I/O操作
      阻塞.非阻塞指的是程序的运行状态

      并发:多个任务同时发生,但同一个时刻只有一个任务在执行(本质上是切换执行,速度非常快)
      并行:多个任务同时执行,必须具备多个处理CPU,
      并发,并行指的程序的执行/处理 方式


      程序的三种状态:
          运行,就绪,阻塞
          时间片用完了之后会转为就绪态

      Linux 和 Windows 开启进程的区别
      Linux: 需要拷贝一份数据给子进程 ,linux会将数据完全拷贝给子进程
      Windows: 需要拷贝一份数据子进程,windows只会一部分数据拷贝给子进程,同时会导入py文件来执行.这样一来会递归开进程

      内存之间相互隔离

      当你开启了一个子进程,并且给他一个任务,如果你希望知道这个任务的什么是完成,就需要等待

      join:提高优先级,是的父进程需要等待子进程结束

      孤儿进程:父进程先结束了,而子进程还运行着
      孤儿进程有存在必要性,对操作系统无害
      孤儿进程会被操作系统接管

      僵尸进程:子进程已经结束了,但是操作系统会保留一些基本信息,比如pid
      僵尸进程如果太多会占用大量的系统资源,导致系统无法开启新的进程

      Linux中有一种机制:wait/waitpid用于父进程回收子进程的资源
      python会自动回收僵尸进程

    开启子进程的两种方式

    from multiprocessing import Process
    import os
    import time

    def task():
       print('买烟去')
       print(time.sleep(3))
       print(os.getpid())

    if __name__ == '__main__':
       print('执行2')
       p = Process(target=task)
       p.start()#开启子进程

       p.terminate()#结束子进程
       print('执行4')
    print('执行1')
    import os
    from multiprocessing import  Process
    class MyProcess(Process):
       def __init__(self,name):
           super().__init__()
           self.name = name
    # 继承Procee覆盖run方法将要执行任务发到run中
       def run(self):
           print(self.name)
           print("子进程 %s running!" % os.getpid())
           print("子进程 %s over!" % os.getpid())
           
    if __name__ == '__main__':
    # 创建时 不用再指定target参数了
    p = MyProcess("rose")
    p.start()
    print("父进程over!")
  • 相关阅读:
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA
    leetcode刷题笔记 222题 完全二叉树的节点个数
    leetcode刷题笔记 221题 最大正方形
    leetcode刷题笔记 220题 存在重复元素 III
    leetcode刷题笔记 219题 存在重复元素 II
    leetcode刷题笔记 218题 天际线问题
    leetcode刷题笔记 216题 组合总和 III
  • 原文地址:https://www.cnblogs.com/zhuqihui/p/10957618.html
Copyright © 2011-2022 走看看