多进程系列:不同的模型处理不同的数据
代码示例
import multiprocessing
import time
def classify_model_1(data):
time.sleep(1)
print("classify_model_1")
return f"模型1分类结果: {data}"
def classify_model_2(data):
time.sleep(1)
print("classify_model_2")
return f"模型2分类结果: {data}"
def classify_model_3(data):
time.sleep(1)
print("classify_model_3")
return f"模型3分类结果: {data}"
def classify_model_4(data):
time.sleep(1)
print("classify_model_4")
return f"模型4分类结果: {data}"
def classify_model_5(data):
time.sleep(1)
print("classify_model_5")
return f"模型5分类结果: {data}"
def segment_model_1(data):
time.sleep(1)
print("segment_model_1")
return f"模型1分割结果: {data}"
def segment_model_2(data):
time.sleep(1)
print("segment_model_2")
return f"模型2分割结果: {data}"
def segment_model_3(data):
time.sleep(1)
print("segment_model_3")
return f"模型3分割结果: {data}"
def segment_model_4(data):
time.sleep(1)
print("segment_model_4")
return f"模型4分割结果: {data}"
def segment_model_5(data):
time.sleep(1)
print("segment_model_5")
return f"模型5分割结果: {data}"
if __name__ == '__main__':
tic = time.time()
data = ["数据1", "数据2", "数据3", "数据4", "数据5"]
classify_functions = [classify_model_1, classify_model_2, classify_model_3, classify_model_4, classify_model_5]
segment_functions = [segment_model_1, segment_model_2, segment_model_3, segment_model_4, segment_model_5]
with multiprocessing.Pool(processes=5) as pool:
classify_tasks = [pool.apply_async(func, (d,)) for func, d in zip(classify_functions, data)]
segment_tasks = [pool.apply_async(func, (d,)) for func, d in zip(segment_functions, data)]
classified_results = [task.get() for task in classify_tasks]
segmented_results = [task.get() for task in segment_tasks]
for result in classified_results:
print(result)
for result in segmented_results:
print(result)
toc = time.time()
print(f"总耗时: {toc - tic}秒")
测试结果示例