103-多进程的效率

没有多进程,即使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-多进程的效率)