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

  

猜你喜欢

转载自www.cnblogs.com/ExMan/p/10426335.html