python多线程
通过创建线程池threadpool的方法,向方法中传入多个参数,同时获取方法的返回值。threadpool是第三方模块,需要先进行安装,
pip instll threadpool
import threadpool
#多线程执行的方法
def retry_read_ApsStatus(pairDate,pairShift,site,flag):
#flag返回的值为1或0
#方法省略
return flag
#回调函数,接收的参数(请求本身,和请求工作函数执行结果
def get_result(request,result):
global results
results.append(result)
results = []
# 声明可容纳五个线程的池
pool = threadpool.ThreadPool(3)
# 创建线程运行内容请求列表(线程工作函数,线程工作参数列表,回调函数)
list_var1 = [parse_date, parse_shift, 2080, ne_flag]
list_var3 = [parse_date, parse_shift, 2090, sz_flag]
list_var2 = [parse_date, parse_shift, 5060, xb_flag]
par_list = [(list_var1, None), (list_var2, None), (list_var3, None)]
re = threadpool.makeRequests(retry_read_ApsStatus, par_list, get_result)
#将每一个线程放到线程池
res = [pool.putRequest(req) for req in re]
pool.wait()
print("多线程返回结果")
print(results)
#多线程返回结果
#[1, 1, 1]