为了更好的控制系统的开启新线程的开销,当需要执行一些生存周期短的大量线程时,使用线程池可以更好的提高性能,在线程池创建指定的线程数量,当有任务时则从线程池里调用线程,线程执行结束后不会死亡,而是回到线程池中,直到下一个任务调用它。线程池中的线程全部都被使用时,其他任务则进入等待状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
使用multiprocessing实现,示例:
import time
from multiprocessing.dummy import Pool


class Threads:
def test(self, num):
time.sleep(2)
t1 = time.strftime('%H:%M:%S')
print('{0}的开始时间为{1}'.format(num, t1), end='')
print('\n')

# 把线程池线程数设置为3
a = Pool(3)
s = Threads()

# 执行七个任务,而最多只能有三个线程同时运行
for i in range(1, 7):
a.imap(s.test, [i, ])
a.close()
a.join()

>>>1的开始时间为20:09:36
>>>2的开始时间为20:09:36
>>>3的开始时间为20:09:36

>>>4的开始时间为20:09:38
>>>5的开始时间为20:09:38
>>>6的开始时间为20:09:38