zoukankan      html  css  js  c++  java
  • 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('主')
    
  • 相关阅读:
    android 发短信
    如何判断一个Div是否可视区域,判断div是否可见
    java arrayCopy
    Java 正则表达式 向前、向后匹配
    postgres 正则表达式
    java 分析方法调用过程
    chrome 模拟点击
    Java获取NTP网络时间
    Android对话框与Activity共存时的异常
    Android代码混淆
  • 原文地址:https://www.cnblogs.com/aden668/p/11512648.html
Copyright © 2011-2022 走看看