没有多进程,即使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)
网友评论