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号导致 无用的占用 有危害

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

  • 相关阅读:
    WPF数据绑定之4种绑定模式
    MVVM弹出提示
    MVVM 事件汇总
    C#读取数据库返回泛型集合 把DataSet类型转换为List泛型集合
    WINFORM 父窗体Load事件中打开子窗体并关闭自身
    常用正则表达式
    GridView密技#3GridView合并储存格后,隔列变底色(AlternatingRowStyle)
    自己动手写的版本 网站的 Detail程序 (DataReader)
    [入门] 双重关联 下拉式选单(DropDownList)
    GridView密技#2GridView合并储存格
  • 原文地址:https://www.cnblogs.com/yftzw/p/8931348.html
Copyright © 2011-2022 走看看