美文网首页python百例
103-多进程的效率

103-多进程的效率

作者: 凯茜的老爸 | 来源:发表于2018-08-09 13:32 被阅读2次

    没有多进程,即使CPU有多个核心,程序只是运行在一个核心上,无法利用多进程提升效率。5000万次加法,如果需要2.5秒,调用两次共花费5秒。

    import time
    
    def calc():
        result = 0
        for i in range(1, 50000001):
            result += i
        print(result)
    
    if __name__ == '__main__':
        start = time.time()
        calc()
        calc()
        end = time.time()
        print(end - start)
    

    通过多进程,程序运行在多个核心上,同样的调用两次5000万次加法运算,时间仅为一半。

    import time
    import os
    
    def calc():
        result = 0
        for i in range(1, 50000001):
            result += i
        print(result)
    
    if __name__ == '__main__':
        start = time.time()
        for i in range(2):
            pid = os.fork()
            if not pid:
                calc()
                exit()
        os.waitpid(-1, 0)  # 挂起父进程,直到子进程结束才继续向下执行
        os.waitpid(-1, 0)  # 每个waitpid只能处理一个僵尸进程,两个子进程需要调用两次
        end = time.time()
        print(end - start)
    

    相关文章

      网友评论

        本文标题:103-多进程的效率

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