104-python-进程池1
"""
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))