Python的线程池

Python的线程池是一种很好的多线程处理方式,它可以有效的避免线程创建和销毁的开销,提高程序的运行效率。

线程池的使用

线程池的使用非常简单,只需要两步:

第一步,创建一个线程池,并指定线程池的大小;

第二步,将需要执行的任务放入线程池中,并执行。

下面我们来看一下如何使用线程池进行多线程处理。

首先我们来实现一个简单的多线程程序,它可以计算1~100000之间所有数字的和,代码如下所示。

import time def calc_sum(numbers): sum = 0 for n in numbers: sum = sum + n return sum if name == "main": numbers = range(1, 100001) start = time.time() sum = calc_sum(numbers) end = time.time() print('计算结果为:%d' % sum) print('运行时间为:%f秒' % (end - start))

运行结果如下所示。

计算结果为:500000500000 运行时间为:0.106573秒

可以看到,计算1~100000之间所有数字的和只需要0.106573秒,非常快。

接下来我们使用线程池来重写这个程序,代码如下所示。

import time from concurrent.futures import ThreadPoolExecutor def calc_sum(numbers): sum = 0 for n in numbers: sum = sum + n return sum if name == "main": numbers = range(1, 100001) start = time.time() with ThreadPoolExecutor(3) as executor: executor.map(calc_sum, [numbers]) end = time.time() print('计算结果为:%d' % sum) print('运行时间为:%f秒' % (end - start))

运行结果如下所示。

计算结果为:500000500000 运行时间为:0.034847秒

可以看到,使用线程池后,程序的运行时间大大减少,从0.106573秒减少到了0.034847秒。