"""
map(fn,iterable)
# 参数1 : 函数
# 参数2 : 可迭代的数据类型
# 自带 join 效果
# 返回一个 带有所有结果的 [] (列表)
apply()
# 同步调用
# 当 fn 执行完毕后 才会继续执行其它代码
# 返回值: fn 的return
apply_async(fn,args=())
# 参数1 : fn,
# 参数2 : 参数...
# 异步调用
# 当 fn 被注册进入一个进程后,程序就继续向下执行
# 返回值: 从fn中获取返回值 obj.get()
# get 会阻塞到对应的 fn 执行完毕
# 先 close(),后 join() 来保持与主进程代码的同步性
# 进程池: ( 用少的进程 解决更多的 任务 )
# 在执行任务之前开启 五个进程等待,每次只有五个进程执行
# 速度会快非常多
# 正常的执行 range(100) 会一次性开启 100 个 进程,
# 运行很慢
"""
import time
from multiprocessing import Pool,Process
def fn(n):
for i in range(5):
print(n+1)
if __name__ == '__main__':
start = time.time()
pool = Pool(5) # 五个进程
pool.map(fn,range(100)) # 100 个任务
t1 = time.time() - start
start = time.time()
lis = []
for i in range(100):
p = Process(target=fn,args=(i,))
lis.append(p)
p.start()
for p in lis:
p.join()
t2 = time.time() - start
print('进程池执行时间:%s,正常执行时间:%s'%(t1,t2))