• 进程


    一,用函数方法写多进程
    from multiprocessing import Process
    import os
    import time
    def info(titile):
        print(title)
        print('module name',__name__)
        print('prarent process:',os.getppid)
        print('process id:',os.getpid)
    def f(name):
        info('33[31;1mfunction f33[0m')
        print('hello',name)    
                
    if __name__=='__main__':#此代码必须要写,否则要报错
        info('33[32;1mmain process line33[0m')
        time.sleep(1)
        p = Process(target=info,argv=('bob',))
        p.start()
        p.join()
    用函数方法写进程

     1.os.getpid(0#获取进程id

    2.os.getppid()#获取父进程id

    3.进程之间的关系:

      子进程的父进程是主进程,主进程的父进程是运行的进程id,每一进程都有一个父进程,最终会归结到一个根进程。

    from mutiprocessing import Process
    import time
    import os
    class Myprocess(Process):
        def __init__(self,name):
            super(Myprocess,self).__init__()
            self.name=name
        def run():
            time.sleep(1)
            print('hello',self.name,time.ctime())
    if __name__=='__main__':
        p_list=[]
        for i in range(3):
            p=Myprocess('alex')
            p.start()
            p_list.append(p)
        for p in p_list:
        
            p.join(0
        print('end')

     三。进程间通信

    两种方法:queue,与pipe

    from multiprocess import Process,Queue
    def f(q,n):
        q.put([42,n,'hello']) #要将队列当作形参传入   
    if __name__=='__main__':
        q = Queue()
        p_list=[]
        for i in range(3):
            p = Proces(target=f,argv=(q,i))
            p_list.append(p)
            p.start()
        print(q.get())
        
        
        print(q.get())
        print(q.get())
        for i in range(3):
            i.join()
    from multiprocess import Process,Pipe
    def f(conn):#conn为管道的一端
        conn.send([42,None,'hello'])
        conn.close()
    if __name__=='__main__':
        parent_pipe,childe_pipe=Pipe()
        p = Process(targe=f,argv=(childe_pipe))    
        p.start()
        print(parent_pipe.recv())
        p.join()

    四.Manager创建的东西可以直接通信

    from multiprocess import Process,Manager
    def f(d,l,i):
        d[i]=i
        
        l.append(i)
        d['good']='day'
    if __name__=='__main__':
        with Manager() as manager:
        d=manager.dict()
        l=manager.list()
        p_list=[]
        for i in range(10):
            p = Process(target=f,argv=(d,l,i))
            p.start()
            p_list.append()
        for i in p_list():
            i.join()
  • 相关阅读:
    新东西-intel edison
    MFC AfxMessageBox(_T("Please Load Rawdata First !"));
    libgl1-mesa-glx:i386 : 依赖: libglapi-mesa:i386
    开源硬件_瑞芯微开发板
    手机方案商
    嵌入式Linux应用开发__求职要求
    工作要求
    Proc文件系统接口调试
    Sysfs文件系统接口调试
    Ubuntu Linux 解决 bash ./ 没有那个文件或目录 的方法
  • 原文地址:https://www.cnblogs.com/gjx1212/p/12240603.html
Copyright © 2020-2023  润新知