首页 > 编程语言 > 详细

python3 进程池

时间:2019-06-06 18:28:30      阅读:125      评论:0      收藏:0      [点我收藏+]

进程池无IO堵塞的情况

# coding:utf-8
import time
from multiprocessing import Process, Pool


def func(n):
    pass


if __name__ == __main__:
    num = 10
    start_pool_time = time.time()
    pool = Pool(5)
    pool.map(func, range(num))  # map是异步执行的,并且自带close和join
    print("通过进程池执行的时间:", time.time() - start_pool_time)

    std_start_time = time.time()
    for i in range(num):
        pass
    print("正常执行的执行时间:", time.time() - std_start_time)

    pro_start_time = time.time()
    p_lst = []
    for i in range(num):
        p = Process(target=func, args=(i,))
        p.start()
        p_lst.append(p)

    [pp.join() for pp in p_lst]
    print("多进程的执行时间:", time.time() - pro_start_time)

# 通过进程池执行的时间: 0.46875
# 正常执行的执行时间: 0.0
# 多进程的执行时间: 0.828125

#一般约定俗成的是进程池中的进程数量为CPU的数量,工作中要看具体情况来考量。

 

有IO阻塞的情况

# coding:utf-8
import time
from multiprocessing import Process, Pool


def func(n):
    time.sleep(1)


if __name__ == __main__:
    num = 10
    start_pool_time = time.time()
    pool = Pool(5)
    pool.map(func, range(num))
    print("通过进程池执行的时间:", time.time() - start_pool_time)

    std_start_time = time.time()
    for i in range(num):
        time.sleep(1)
    print("正常执行的执行时间:", time.time() - std_start_time)

    pro_start_time = time.time()
    p_lst = []
    for i in range(num):
        p = Process(target=func, args=(i,))
        p.start()
        p_lst.append(p)

    [pp.join() for pp in p_lst]
    print("多进程的执行时间:", time.time() - pro_start_time)


# 通过进程池执行的时间: 2.578125
# 正常执行的执行时间: 10.0
# 多进程的执行时间: 1.75

 

python3 进程池

原文:https://www.cnblogs.com/lilyxiaoyy/p/10986358.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!