使用 multiprocessing 多进程处理批量数据

示例代码

python 复制代码
import multiprocessing

def process_data(data):
    # 这里是处理单个数据的过程
    return data * 2

# 待处理的数据
data = [1, 2, 3, 4, 5]

def normal_func():
    # 普通处理方式
    result = []
    for obj in data:
        result.append(process_data(obj)

    return result

def parallel_func():
    # 多进程处理方式
    pool = multiprocessing.Pool(multiprocessing.cpu_count())
    result = pool.map(process_data, data)
    pool.close()
    return result

if __name__ == '__main__':
    result = normal_func()
    result = parallel_func()
    

multiprocessing.Pool 创建进程池, 传入的参数是要要使用的 CPU 内核数量, 直接用 cpu_count() 可以拿到当前硬件配置所有的 CPU 内核数.

pool.map 可以直接将处理后的结果拼接成一个 list 对象

应用在实际数据处理代码的效果对比:

  • 普通处理方式, 用时 221 秒
  • 多进程处理方式, 用时 39 秒, 节省了 82% 的时间
相关推荐
智算菩萨4 分钟前
【Python机器学习】分类模型评估体系的全景解析:准确率、精确率、召回率、F1 分数与 AUC
python·机器学习·分类
七夜zippoe5 分钟前
Python迭代器与生成器深度解析:从原理到协程应用实战
开发语言·python
2401_841495645 分钟前
Python适合开发的游戏
python·游戏·pygame·tkinter·panda3d·arcade·ursina
Sunsets_Red11 分钟前
待修改莫队与普通莫队优化
java·c++·python·学习·算法·数学建模·c#
艺术是真的秃头21 分钟前
Trae:当编程从“编写”转向“对话”与“委派”
人工智能·python·ai·aigc
奕成则成26 分钟前
Django使用
后端·python·django
38242782733 分钟前
使用 webdriver-manager配置geckodriver
java·开发语言·数据库·爬虫·python
牛奔37 分钟前
macOS 使用 conda,同时本地安装了python,遇到 ModuleNotFoundError: No module named ‘xxx‘` 解决
开发语言·python·macos·conda
咕白m62539 分钟前
通过 Python 提取 PDF 表格数据(导出为 TXT、Excel 格式)
后端·python
我送炭你添花39 分钟前
Pelco KBD300A 模拟器:01+1.KBD300A 通用键盘详解:DIP 开关与接口配置
python·计算机外设·运维开发