zoukankan      html  css  js  c++  java
  • 进程

    进程:

    进程就是一个正在执行的过程/程序

    多进程:

    一个程序执行多次就是多进程

    import os
    import time
    
    
    print('爹是:',os.getppid())#这个爹pycharm
    print('儿是:',os.getpid())
    
    time.sleep(30)

    上面一个程序重复执行了三次 得到的三次不一样的pid值

     创建子进程的两种方式:

    from multiprocessing import Process
    import time
    #第一种
    def fack(name):
        print('%s 开始'%name)
        time.sleep(3)
        print('%s 结束'%name)
    
    if __name__ == '__main__':
        # p=Process(target=fack,kwargs={'name':'yxlm'})
        p=Process(target=fack,args=('yxlm',))
        p.start()
        print('主====》')
    
    #第二种
    class Yuang(Process):
        def __init__(self,name):
            super().__init__()
            self.name=name
    
        def run(self):
            print('%s 开始' % self.name)
            time.sleep(3)
            print('%s 结束' % self.name)
    
    if __name__ == '__main__':
        p=Yuang('yyyy')
        p.start()
        print('主====》')

    进程的内存空间是相互隔离的:

    from multiprocessing import Process
    import time
    
    x=1000
    
    def fuck():
        global x
        print(x)
        time.sleep(3)
        x=0
        print(x)
    print(x)#父进程运行一次,子进程复制也运行了一次
    if __name__ == '__main__':
        print(x)
        p=Process(target=fuck)
        p.start()
        time.sleep(5)#等子进程,运行结束值不变,就说明 相互隔离
        print('主===>',x)

    父进程 等待子进程结束:

    from multiprocessing import Process
    import time
    
    
    def fuck(name):
        print('%s 开始'%name)
        time.sleep(3)
        print('%s 结束'%name)
    
    
    if __name__ == '__main__':
        p=Process(target=fuck,args=('ymub',))#元组的形式
        p.start()
        p.join()#等待子进程结束
        print('主====》')

    进程对象的其他属性:

    from multiprocessing import Process
    import time
    
    x=1000
    
    def fuck():
        global x
        time.sleep(3)
        x=0
        print(x)
    
    
    if __name__ == '__main__':
        p=Process(target=fuck,name='张相玉最帅')
        p.start()
        print(p.pid)#pid号
        print(p.name)#名字
        p.terminate()#请求杀死子进程
        p.join()#等待,和处理子进程的数据
        print(p.is_alive())#打印是否存活
        print('主===>')

     僵尸进程和孤儿进程

    僵尸进程就是子进程死了  儿子的数据留了下来,让父进程随时来调,如果父进程进入死循环或者父进程还没来得及清理儿子的尸体,就会占用过多的pid号导致 无用的占用 有危害

    孤儿进程就是父进程死了 儿子过段时间会有人来带走 所以没有危害

  • 相关阅读:
    MySQL DDL 在指定位置新增字段
    .NET平台常见技术框架整理汇总
    使用Linq求和方法Sum计算集合中多个元素和时应该注意的性能问题
    python时间操作
    django 利用原生sql操作数据库
    滑动验证码获取像素偏移量
    python opencv简单使用
    django通过旧数据库库生成models
    pandas 操作csv文件
    简单工厂模式(Simple Factory Pattern)
  • 原文地址:https://www.cnblogs.com/yftzw/p/8931348.html
Copyright © 2011-2022 走看看