使用 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% 的时间
相关推荐
小羊没烦恼!17 分钟前
Windows Azure Platform体验(1):Windows Azure
java·大数据·后端·python·flask·word·.net
JWASX20 分钟前
【agent 开发】agent 开发学习 - LangChain(1)
python·学习·agent
jason.zeng@150220726 分钟前
(五)多轮对话上下文,实现交互。
python·交互·llama
wangchunyu11426 分钟前
食韵味简 —— 免费开源的中式菜谱 API 服务
python·django·开源
znx93926 分钟前
因子分析:量化交易的底层核心与盈利逻辑基石
人工智能·python·机器学习·期魔方
jason.zeng@150220732 分钟前
(十)分层架构的多文件工程
python·架构·prompt·交互·ai编程·llama
小小张说故事32 分钟前
Python 装饰器到底是个啥?从 @ 符号到手写一个,5 个例子讲透
后端·python
haerapi42 分钟前
KingbaseES 全文检索实战之前:先建立中文搜索的可解释基线
开发语言·python·全文检索
专业程序开发源1 小时前
SSM笔记本在线销售系统32649-计算机课程设计、毕业设计
java·spring boot·后端·python·django·php·课程设计
脉动数据行情11 小时前
Python asyncio 异步实现比特币 BTC 实时行情监听 高并发版
开发语言·python·区块链