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()
|