python中用 multiprocessing 加速任务处理

Posted JasonLiu1919

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中用 multiprocessing 加速任务处理相关的知识,希望对你有一定的参考价值。

背景

面对海量任务需要高效对其进行消费,而任务之间不存在处理结果的相互依赖。

方案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))

以上是关于python中用 multiprocessing 加速任务处理的主要内容,如果未能解决你的问题,请参考以下文章

Multiprocessing

多进程 multiprocessing

11.python并发入门(part9 多线程模块multiprocessing基本用法)

python多进程multiprocessing

python之multiprocessing:multiprocessing.Pool

Python multiprocessing