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() |
原文:https://www.cnblogs.com/ExMan/p/10426335.html