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))

 

posted @ 2018-11-20 12:29  _Q  阅读(98)  评论(0编辑  收藏  举报