Python threadpool传递参数

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