背景
面对海量任务需要高效对其进行消费,而任务之间不存在处理结果的相互依赖。
【更多、更及时内容欢迎留意微信公众号: 小窗幽记机器学习 】
方案1: multiprocessing模块
以下模拟每个任务处理耗时1s,共有50任务的场景。
示例代码如下:
import time
from multiprocessing import Pool
def function_call(task_dict):
time.sleep(1) # 模拟真实的处理流程
print(task_dict)
if __name__ == '__main__':
test_list = range(50) # 单进程则需要50s, 如果开启5个进程,则大概需要10s
print("Single process version:")
start_time = time.time()
for i in test_list:
function_call(i)
end_time = time.time()
print("Single process version cost time={}s\n".format(end_time-start_time))
print("multiprocess(below 5 processes) version:")
p = Pool(5)
start_time = time.time()
p.map(function_call, test_list)
end_time = time.time()
print("multiprocess(below 5 processes) version cost time={}s\n".format(end_time - start_time))