• Process的join用法


    Process的join用法

    join:主进程等,等待子进程结束

    from multiprocessing import Process
    import time
    def foo():
        print('进程  start ')
        time.sleep(2.3)
        print('进程  end ')
    
    
    
    if __name__ == '__main__':
        p = Process(target=foo)
        p.start() #
        # 核心需求就是
        # time.sleep(5)
        p.join() # 阻塞住主进程再等待子进程结束,然后再往下执行,(了解的是:内部会待用wait())
        print('主')
    
    from multiprocessing import Process
    import time
    def foo(x):
        print('进程  start ')
        time.sleep(x)
        print('进程  end ')
    
    
    
    if __name__ == '__main__':
        p1 = Process(target=foo,args=(1,))
        p2 = Process(target=foo,args=(2,))
        p3 = Process(target=foo,args=(3,))
        start = time.time()
        p1.start() #
        p2.start() #
        p3.start() #
        # 核心需求就是
        # time.sleep(5)
        p3.join() #1s
        p1.join() #1s
        p2.join() #1s
        # 总时长:按照最长的时间计算多一点。
        end = time.time()
        print(end-start) #3s多 or 6s多  ?  正解:3s多
        print('主')
    
    from multiprocessing import Process
    import time
    def foo(x):
        print(f'进程{x}  start ')
        time.sleep(x)
        print(f'进程{x}  end ')
    
    
    
    if __name__ == '__main__':
        p1 = Process(target=foo,args=(1,))
        p2 = Process(target=foo,args=(2,))
        p3 = Process(target=foo,args=(3,))
        start = time.time()
        p1.start() #
        p1.join() #
        p2.start() #
        p2.join() #
        p3.start() #
        p3.join() #   7s多
        # 不如不开,直接穿行调用函数反而快
        # foo(1)
        # foo(2)
        # foo(3)   6s多
        # 核心需求就是
        # time.sleep(5)
        # p3.join() #1s
        # p1.join() #1s
        # p2.join() #1s   3s多
        # 总时长:按照最长的时间计算多一点。
        end = time.time()
        print(end-start) 
        print('主')
    
    #代码优化
    from multiprocessing import Process
    import time
    def foo(x):
        print(f'进程{x}  start ')
        time.sleep(x)
        print(f'进程{x}  end ')
    
    
    
    if __name__ == '__main__':
        start = time.time()
        p_list = []
        for i in range(1,4):
            p = Process(target=foo,args=(i,))
            p.start()
            p_list.append(p)
        print(p_list)
        for p in p_list:
            p.join()
        end = time.time()
        print(end-start) #3s多 or 6s多  ?  正解:3s多
        print('主')
    
  • 相关阅读:
    Java 入门25 继承 this super
    Java 18 String 常用API
    Java 入门21 java 进阶大纲 及复习
    Java 入门20 ArrayList 小案例实践
    面试集合
    面试~设计模式单例模式
    系统入门到实战学习某项技术、有问题找"百度"、学习大佬的技术博客、找开源代码等资料
    面试~双亲委派模型
    面试面向对象7大设计原则
    第一二章学习心得
  • 原文地址:https://www.cnblogs.com/aden668/p/11512648.html
Copyright © 2020-2023  润新知