Python应用专题 | 5:Python多进程处理数据

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 本文介绍如何使用多进程的方式高效处理海量任务数据

更多、更及时内容欢迎留意微信公众号小窗幽记机器学习

背景

假设有1千万任务数据,每条数据处理耗时1s,那么如何加速整个任务的处理速度?其中一种解决方案就是使用多进程处理。

解决方案

pandas + pandarallel
安装pandarallel: pip install pandarallel

示例

# -*- coding: utf-8 -*-
# @Time    : 2022/5/21 6:14 下午
# @Author  : JasonLiu
# @FileName: test.py
import time
import pandas as pd
from pandarallel import pandarallel
pandarallel.initialize(nb_workers=5)
text1 = ["华中科技大学"+str(i) for i in range(10)]

task_df = pd.DataFrame({"text1": text1})


def text_processing(text):
    """
    做一些文本的处理操作, 这里仅仅是为了演示
    """
    text += " HUST"
    time.sleep(2)
    return text


start_time = time.time()
task_df["new_text1"] = task_df["text1"].apply(text_processing)
end_time = time.time()
print("raw apply cost=", end_time-start_time)
print(task_df)
start_time = time.time()
task_df["new_text2"] = task_df["text1"].parallel_apply(text_processing)
end_time = time.time()
print("parallel_apply cost=", end_time-start_time)
print(task_df)

运行结果如下:

INFO: Pandarallel will run on 5 workers.
INFO: Pandarallel will use Memory file system to transfer data between the main process and workers.
raw apply cost= 20.01844358444214
     text1     new_text1
0  华中科技大学0  华中科技大学0 HUST
1  华中科技大学1  华中科技大学1 HUST
2  华中科技大学2  华中科技大学2 HUST
3  华中科技大学3  华中科技大学3 HUST
4  华中科技大学4  华中科技大学4 HUST
5  华中科技大学5  华中科技大学5 HUST
6  华中科技大学6  华中科技大学6 HUST
7  华中科技大学7  华中科技大学7 HUST
8  华中科技大学8  华中科技大学8 HUST
9  华中科技大学9  华中科技大学9 HUST
parallel_apply cost= 4.040616035461426
     text1     new_text1     new_text2
0  华中科技大学0  华中科技大学0 HUST  华中科技大学0 HUST
1  华中科技大学1  华中科技大学1 HUST  华中科技大学1 HUST
2  华中科技大学2  华中科技大学2 HUST  华中科技大学2 HUST
3  华中科技大学3  华中科技大学3 HUST  华中科技大学3 HUST
4  华中科技大学4  华中科技大学4 HUST  华中科技大学4 HUST
5  华中科技大学5  华中科技大学5 HUST  华中科技大学5 HUST
6  华中科技大学6  华中科技大学6 HUST  华中科技大学6 HUST
7  华中科技大学7  华中科技大学7 HUST  华中科技大学7 HUST
8  华中科技大学8  华中科技大学8 HUST  华中科技大学8 HUST
9  华中科技大学9  华中科技大学9 HUST  华中科技大学9 HUST

从中可以看出,使用 Pandarallel 使得整个处理耗时从原始的20s,缩减到4s。

【更多、更及时内容欢迎留意微信公众号小窗幽记机器学习

相关文章
|
4天前
|
机器学习/深度学习 数据采集 算法
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
有多种方法可以处理时间序列数据中的噪声。本文将介绍一种在我们的研究项目中表现良好的方法,特别适用于时间序列概况中数据点较少的情况。
19 1
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
|
4天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从零基础到实战应用
【9月更文挑战第15天】本文将引导读者从零开始学习Python编程,通过简单易懂的语言和实例,帮助初学者掌握Python的基本语法和常用库,最终实现一个简单的实战项目。文章结构清晰,分为基础知识、进阶技巧和实战应用三个部分,逐步深入,让读者在学习过程中不断积累经验,提高编程能力。
|
2天前
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
在数字时代,网络应用成为连接世界的桥梁。Python凭借简洁的语法和丰富的库支持,成为开发高效网络应用的首选。本文通过实时聊天室案例,介绍Python Socket编程的基础与进阶技巧。基础篇涵盖服务器和客户端的建立与数据交换;进阶篇则探讨多线程与异步IO优化方案,助力提升应用性能。通过本案例,你将掌握Socket编程的核心技能,推动网络应用飞得更高、更远。
17 1
|
7天前
|
SQL JavaScript 前端开发
用Java、Python来开发Hive应用
用Java、Python来开发Hive应用
18 6
|
4天前
|
存储 程序员 数据处理
深入理解Python生成器及其应用
本文将探讨Python生成器的基本概念、工作原理及其在实际编程中的多种应用场景。通过实例解析,帮助读者更好地理解和掌握这一强大的编程工具。
|
5天前
|
数据采集 算法 数据处理
Python中的列表推导式:简介与应用
【9月更文挑战第14天】本文旨在介绍Python中一种强大且简洁的构造列表的方法——列表推导式。我们将从基础语法入手,通过实例演示其用法,并探讨在数据处理和算法优化中的应用价值。文章将不包含代码示例,而是专注于概念理解和应用场景的描述,以促进读者对列表推导式的深入认识。
12 3
|
4天前
|
监控 Ubuntu API
Python脚本监控Ubuntu系统进程内存的实现方式
通过这种方法,我们可以很容易地监控Ubuntu系统中进程的内存使用情况,对于性能分析和资源管理具有很大的帮助。这只是 `psutil`库功能的冰山一角,`psutil`还能够提供更多关于系统和进程的详细信息,强烈推荐进一步探索这个强大的库。
15 1
|
7天前
|
数据采集 机器学习/深度学习 数据可视化
Python 在数据科学中的应用
这篇文章将深入探讨 Python 在数据科学中的多种应用,包括数据清洗、数据分析、可视化及机器学习。我们将通过实例展示如何利用 Python 的强大库和工具,如 Pandas、NumPy、Matplotlib、Seaborn 以及 Scikit-learn,来高效地进行数据处理与分析。无论您是初学者还是有经验的开发者,这篇文章都能为您提供宝贵的见解和实用技巧。
|
3天前
|
消息中间件 程序员 数据处理
探究操作系统中的进程间通信(IPC)机制及其在现代软件开发中的应用
本文深入探讨了操作系统中的核心概念——进程间通信(IPC),揭示了其在现代软件开发中的关键作用。通过对各种IPC机制如管道、消息队列、共享内存等的详细分析,本文旨在为读者提供一个清晰的理解框架,帮助他们掌握如何在实际应用中有效利用这些技术以实现进程间的协同工作。此外,文章还将探讨IPC在高并发环境下的性能优化策略,以及如何避免常见的IPC编程错误。通过结合理论与实践,本文不仅适合希望深入了解操作系统原理的技术人员阅读,也对那些致力于提升软件质量和开发效率的程序员具有重要参考价值。
9 0
|
3天前
|
数据处理 开发者 Python
探索Python中的列表推导式在Python编程中,列表推导式是一种简洁而高效的方法,用于从现有的列表创建新列表。本文将深入探讨列表推导式的用法、优势以及一些实际应用示例。
列表推导式是Python提供的一种强大工具,它允许开发者以更简洁的语法快速生成列表。通过结合循环和条件语句,列表推导式能够简化代码结构,提高开发效率。本文详细介绍了列表推导式的基本用法,并通过实例展示了其在数据处理、转换和过滤中的广泛应用。
9 0