参考网站:https://python-parallel-programmning-cookbook.readthedocs.io/zh_CN/latest/index.html
多进程模板
def show_predict_batch(predict_model_list, predict_path):
"""
批量处理预测模型
@predict_model_list: 预测的模型列表
@predict_path: 预测模型存放路径
return: None
"""
for i, predict_model in enumerate(tqdm(predict_model_list)):
try:
save_predict(predict_model, predict_path)
except KeyError:
print("predict_model: ", predict_model)
except Exception as e:
raise e
def parallel_show_predict(model_list, predict_path, n_workers=8):
"""
多进程处理
"""
if len(model_list) < n_workers:
n_workers = len(model_list)
chunk_len = len(model_list) // n_workers
chunk_lists = [model_list[i:i+chunk_len] for i in range(0, (n_workers-1)*chunk_len, chunk_len)]
chunk_lists.append(model_list[(n_workers - 1)*chunk_len:])
process_list = [Process(target=show_predict_batch, args=(chunk_list, predict_path, )) for chunk_list in chunk_lists]
for process in process_list:
process.start()
for process in process_list:
process.join()