使用进程池的方式提高代码执行速度
通过使用进程池的方式并获取被执行函数的返回值
from multiprocessing.pool import Pool
from multiprocessing import Manager
def get_info(country_list, return_dict, num):
"""
获取处理之后的信息
@return:
"""
test_result = []
for country in country_list:
resp= RecFacade().api(context_params).json() # 业务逻辑函数
test_result.append(resp)
return_dict[num] = test_result
def run( all_country_list, process_num):
"""
执行函数
@param all_country_list: 被执行函数的请求参数
@param process_num: 进程数量
@return:
"""
manger = Manager() # 进程
return_dict = manger.dict()
quotient, remainder = divmod(len(context_params_list), process_num)
pool = Pool(process_num)
cycle_number = quotient + 1 if remainder else quotient
for num in range(cycle_number):
country_list = context_params_list[num * process_num: (num + 1) * process_num]
pool.apply_async(get_info, (country_list, return_dict, num))
pool.close()
pool.join()
resp = return_dict.values()
data_list = [lis for data in resp for lis in data]
return data_list