多进程

作者: 小龙虾0o0 | 来源:发表于2019-05-28 20:01 被阅读0次

    创建进程

    方式一:直接继承Process类

    from multiprocessing import Process
    
    p = Process(target=fun, name='...',args=(param,), kwargs={...}, daemon=bool)
    p.start()
    p.join()
    print('p子进程执行完才到我了')
    

    daemon 表示守护进程,当为子进程上设置为True时,主进程结束(这里的结束指代码级的结束,如果为False,会一直等到子进程结束,父进程才结束),会发送SIGTERM(即相当于kill -15);默认为False。另外,daemon进程不能有子进程!

    join:意义是阻塞当前进程,直到子进程结束


    方式二:写一个自定义类,还是继承Process

    from multiprocessing import Process
    
    def fun():
        pass
    
    class MyProcess(Process):
        def run(self):
            fun()
    

    这里重写run方法可以实现一些自定义的灵活操作,当子进程启动时,会自动调用run,如果同时定义了target,会忽略target方法


    方式三:进程池

    from multiprocessing import Pool
    
    def fun():
        pass
    
    pool = Pool(processes=int, initializer=fun,
                initargs=(param,), maxtasksperchild=int)
    

    processes=指定创建进程数, initializer=初始化进程需要调用的函数, initargs=初始化函数的参数, maxtasksperchild=每个进程允许处理的最大任务数,达到就kill掉,再起一个新的子进程

    map:map(fun, iterable)

    相关文章

      网友评论

          本文标题:多进程

          本文链接:https://www.haomeiwen.com/subject/qlybwqtx.html