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!")
  • 相关阅读:
    C#利用反射动态调用类及方法
    系统程序监控软件
    SQL server 2008 安装和远程访问的问题
    sql server 创建临时表
    IIS 时间问题
    windows 2008 安装 sql server 2008
    sql server xml nodes 的使用
    Window 7sp1 安装vs2010 sp1 打开xaml文件崩溃
    CSS资源网址
    Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0
  • 原文地址:https://www.cnblogs.com/zhuqihui/p/10957618.html
Copyright © 2011-2022 走看看