python 线程池和进程池模式,哪个更快?

python的多线程是伪多线程。

===

比较python 线程池和进程池运行模式,哪个执行更快?

测试电脑硬件配置:

cpu - intel(R) Core(TM) i5-7400 CPU @ 3.00GHz,内存 8G,如下图:

测试代码如下:

import concurrent.futures
import time

number_list = list(range(1, 101)) 
#  循环次数分别为10次、100次和1000次

def count(number):
    for i in range(0,10000000):
        i += 1
    return i*number

def evaluate(item):
    result_item = count(item)
    if item == len(number_list):
        print(' 循环次数: %s ' % item)

if __name__ == '__main__':
    # 有序模式
    start_time = time.time()
    for item in number_list:
        evaluate(item)
    print(' 有序模式执行,耗时: %s 秒' % (time.time() - start_time))
    print()
   
    # 线程池模式
    start_time = time.time()
    with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
        for item in number_list:
            executor.submit(evaluate, item)
    print(' 线程池模式执行,耗时:%s 秒' % (time.time() - start_time))
    print()
      
    # 进程池模式
    start_time = time.time()
    with concurrent.futures.ProcessPoolExecutor(max_workers=5) as executor:
        for item in number_list:
            executor.submit(evaluate, item)
    print(' 多进程池模式执行,耗时:%s 秒' % (time.time() - start_time))


循环10次的运行结果如下:

循环次数: 10

有序模式执行,耗时: 3.892 秒

循环次数: 10

线程池模式执行,耗时:3.971 秒

循环次数: 10

多进程池模式执行,耗时:2.094 秒

循环100次的运行结果如下:

循环次数: 100

有序模式执行,耗时: 41.788 秒

循环次数: 100

线程池模式执行,耗时:38.401 秒

循环次数: 100

进程池模式执行,耗时:10.588 秒

循环1000次的运行结果如下:

循环次数: 1000

有序模式执行,耗时: 419.848 秒

循环次数: 1000

线程池模式执行,耗时:385.321 秒

循环次数: 1000

进程池模式执行,耗时:101.964 秒

从以上三次运行结果看,进程池模式的执行速度都是最快的!在循环次数较多的情况下,进程池模式的执行速度都接近线程池或有序执行模式的4倍,而有序执行和线程池模式执行模式的耗时差别不大,这也证明python的多线程是伪多线程。

原文链接:,转发请注明来源!