• 学习总结(三十二)


    1.多进程

            1)什么是多进程

                    一个正在运行的程序就是进程,是程序执行具体过程的一种表现,一个程序多次执行,就会产生多个进程,但是进程之间相互独立

    2.阻塞 非阻塞 并行 并发

            1)阻塞:程序遇到io操作就会进入阻塞状态

                    本地IO input print sleep read write

                    网络IO recv send

            2)非阻塞:程序正常运行中没有任何的IO操作,就处于非阻塞状态

            3)并发:多个任务看起来同时在处理,本质上是切换执行,速度非常快

            4)并行:多个任务真正的同时执行,必须具备多核cpu才能并行

             阻塞 非阻塞 说的程序运行的状态

             并发 并行 说的是任务的处理方式

     

    3.进程的两种使用方式

    第一种方式

    from multiprocessing import Process
    import os
    
    def task():
        print("子进程run")
        print(os.getpid())
    
    
    if __name__ == '__main__':
        print(os.getpid())
        p=Process(target=task,args=("xiecheng"))
        p.start()
    
        print("任务结束")
    

      

    第二种方式

    class myProcess(Process):
        def __init__(self,name):
            super().__init__()
            self.name=name
    
        def run(self):
            print(self.name)
            print("子进程 %s running!" % os.getpid())
            print("子进程%s over!" % os.getpid())
            # return  self.name
    if __name__ == '__main__':
        p=myProcess("xiecheng").run()
    
        print(p,"父进程over")
    

      

     

     4.常用属性

    # p.join() # 等待子进程结束
    # p.terminate()  # 终止进程
    # print(p.name)  # 进程的名称
    # print(p.is_alive()) #是否存活
    # p.terminate() # 与start一样 都是给操作系统发送指令 所以会有延迟
    # print(p.exitcode) # 获取退出码
    

      

    5.僵尸与孤儿进程

     

         1) 孤儿进程

                       指的是,父进程先结束 ,而子进程还在运行着,

                       孤儿进程无害,有 其存在的必要性

                       例如:qq开启了浏览器,qq先退出了 浏览器应该继续运行

                       孤儿进程会被操作系统接管

          2)僵尸进程

                      值得是,子进程已经结束了,但是操作系统会保存一些进程信息,如PID,运行时间等,此时这个进程就称之为僵尸进程

                      僵尸进程如果太多将会占用大量的资源,造成系统无法开启新新进程

                      linux 中有一个wai/waitpid 用于父进程回收子进程资源

                     python会自动回收僵尸进程

          

  • 相关阅读:
    微软产品中的十一类人员
    C#操作word
    动态代理的介绍和使用
    鼠标屏幕取词技术
    软件语录(来自软件开发的创新思维)
    无句柄的控件spy++查找不到的控件
    代理介绍和动态生成程序集技术
    注释宏定义
    解析字节中的bit数的函数
    Xilinx SDK使用心得之一
  • 原文地址:https://www.cnblogs.com/xzcvblogs/p/10957560.html
Copyright © 2020-2023  润新知