threadpool模块是一个很老的实现python线程池的模块,pypi已经建议用multiprocessing代替它了,但是,它使用的便捷性还是征服了一批忠实用户。
threadpool模块实现多线程只需要如下几行代码:
1
2
3
4
5
|
from threadpool import * pool = ThreadPool(poolsize) requests = makeRequests(some_callable, list_of_args, callback) [pool.putRequest(req) for req in requests] pool.wait() |
它通过传入一个参数组来实现多线程,并且它的多线程是有序的,顺序与参数组中的参数顺序保持一致。
用它传递参数组的例子如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#---------------------------------------------------------------------- def hello(m, n, o): """""" print "m = %s, n = %s, o = %s" % (m, n, o) if __name__ = = '__main__' : # 方法1 lst_vars_1 = [ '1' , '2' , '3' ] lst_vars_2 = [ '4' , '5' , '6' ] func_var = [(lst_vars_1, None ), (lst_vars_2, None )] # 方法2 dict_vars_1 = { 'm' : '1' , 'n' : '2' , 'o' : '3' } dict_vars_2 = { 'm' : '4' , 'n' : '5' , 'o' : '6' } func_var = [( None , dict_vars_1), ( None , dict_vars_2)] pool = threadpool.ThreadPool( 2 ) requests = threadpool.makeRequests(hello, func_var) [pool.putRequest(req) for req in requests] pool.wait() |