网易首页 > 网易号 > 正文 申请入驻

仅用几行代码,让Python函数执行快30倍

0
分享至

作者 | Satyam Kumar

译者 | 王强

策划 | 刘燕

Python 是一种流行的编程语言,也是数据科学社区中最受欢迎的语言。与其他流行编程语言相比,Python 的主要缺点是它的动态特性和多功能属性拖慢了速度表现。Python 代码是在运行时被解释的,而不是在编译时被编译为原生代码。

Python 多线程处理的基本指南

C 语言的执行速度比 Python 代码快 10 到 100 倍。但如果对比开发速度的话,Python 比 C 语言要快。对于数据科学研究来说,开发速度远比运行时性能更重要。由于存在大量 API、框架和包,Python 更受数据科学家和数据分析师的青睐,只是它在性能优化方面落后太多了。

在本文中,我们将讨论如何用多处理模块并行执行自定义 Python 函数,并进一步对比运行时间指标。

多处理入门

考虑一个单核心 CPU,如果它被同时分配多个任务,就必须不断地中断当前执行的任务并切换到下一个任务才能保持所有进程正常运行。对于多核处理器来说,CPU 可以在不同内核中同时执行多个任务,这一概念被称为并行处理。

它为什么如此重要?

数据整理、特征工程和数据探索都是数据科学模型开发管道中的重要元素。在输入机器学习模型之前,原始数据需要做工程处理。对于较小的数据集来说,执行过程只需几秒钟就能完成;但对于较大的数据集而言,这项任务就比较繁重了。

并行处理是提高 Python 程序性能的一种有效方法。Python 有一个多处理模块,让我们能够跨 CPU 的不同内核并行执行程序。

实 现

我们将使用来自multiprocessing模块的Pool类,针对多个输入值并行执行一个函数。这个概念称为数据并行性,它是 Pool 类的主要目标。

我将使用从 Kaggle 下载的 Quora 问题对相似性数据 集来演示这个模块。

上述数据集包含了很多在 Quora 平台上提出的文本问题。我将在一个 Python 函数上执行多处理模块,这个函数通过删除停用词、删除 HTML 标签、删除标点符号、词干提取等过程来处理文本数据。

preprocess()就是执行上述文本处理步骤的函数。

可以在 这里 找到托管在我的 GitHub 上的函数 preprocess() 的代码片段。

现在,我们使用 multiprocessing 模块中的 Pool 类为数据集的不同块并行执行该函数。数据集的每个块都将并行处理。


import multiprocessingfrom functools import partialfrom QuoraTextPreprocessing import preprocess
BUCKET_SIZE = 50000
def run_process(df, start):df = df[start:start+BUCKET_SIZE]print(start, "to ",start+BUCKET_SIZE)temp = df["question"].apply(preprocess)
chunks = [x for x in range(0,df.shape[0], BUCKET_SIZE)]pool = multiprocessing.Pool()func = partial(run_process, df)temp = pool.map(func,chunks)pool.close()pool.join()

该数据集有 537,361 条记录(文本问题)需要处理。对于 50,000 的桶大小,数据集被分成 11 个较小的数据块,这些块可以并行处理以加快程序的执行时间。

基准测试:

人们常问的问题是使用多处理模块后执行速度能快多少。我在实现了数据并行性,对整个数据集执行一次 preprocess() 函数后对比了基准执行时间。

运行测试的机器有 64GB 内存和 10 个 CPU 内核。

多处理和单处理执行的基准时间

从上图中,我们可以观察到 Python 函数的并行处理将执行速度提高了近30 倍

你可以在我的 GitHub 中找到用于记录基准测试数据的 Python文件。 基准测试过程

结 论

在本文中,我们讨论了 Python 中多处理模块的实现,该模块可用于加速 Python 函数的执行。添加几行多处理代码后,具有 537k 实例的数据集的执行时间几乎快了 30 倍。

处理大型数据集的时候,我建议大家使用并行处理,因为它可以节省大量时间并加快工作流程。

请参阅我关于加速 Python 工作流程的其他文章:

  • 4 个可以并行化现有 Pandas 生态系统的库

  • Pandas 数据帧迭代速度提高 400 倍

  • 优化大数据集的 Pandas 内存使用

  • 使用 PyPolars 将 Pandas 的速度提高 3 倍

参考文章

多处理文档:https://docs.python.org/3/library/multiprocessing.html

原文链接:

https://towardsdatascience.com/25x-times-faster-python-function-execution-in-a-few-lines-of-code-4c82bdd0f64c

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
英超:恩佐圆月弯刀处子球 哈兰德通杀英超 曼城5-3桑德兰登顶积分榜

英超:恩佐圆月弯刀处子球 哈兰德通杀英超 曼城5-3桑德兰登顶积分榜

钉钉陌上花开
2026-09-20 23:01:59
人怎么可以说出这么高情商的话

人怎么可以说出这么高情商的话

娱乐洞察点点
2026-09-20 06:50:17
游泳2小时夺6金!亚运会金牌榜:中国狂揽11金领跑,甩开日本5金

游泳2小时夺6金!亚运会金牌榜:中国狂揽11金领跑,甩开日本5金

侃球熊弟
2026-09-20 18:19:43
蔡剑峰任无锡市副市长、代理市长

蔡剑峰任无锡市副市长、代理市长

无锡eTV全媒体
2026-09-20 16:26:17
随着朝鲜0-0、泰国5-1、中国0-0,亚运男足最新积分榜出炉

随着朝鲜0-0、泰国5-1、中国0-0,亚运男足最新积分榜出炉

侧身凌空斩
2026-09-20 19:57:45
许嵩刚官宣结婚,冯禧黑历史就被扒,有必要吗?

许嵩刚官宣结婚,冯禧黑历史就被扒,有必要吗?

影视地平线
2026-09-20 15:27:27
皇马落后榜首巴萨6分,队史仅一次在这种局面下逆转夺冠

皇马落后榜首巴萨6分,队史仅一次在这种局面下逆转夺冠

懂球帝
2026-09-21 00:46:07
9月20日俄乌最新:俄军阵亡将破100万

9月20日俄乌最新:俄军阵亡将破100万

西楼饮月
2026-09-20 22:34:24
国乒女单全军覆没!王艺迪2局领先被逆转,日本包揽女单冠亚军

国乒女单全军覆没!王艺迪2局领先被逆转,日本包揽女单冠亚军

乒烧泳球
2026-09-20 15:15:55
浙江商K大面积关门:一场酒局干翻一条深夜产业链

浙江商K大面积关门:一场酒局干翻一条深夜产业链

听心堂
2026-09-19 11:51:59
被骂尺度太大?池昌旭林珍娜的大胆出演,藏着最纯粹的演员初心

被骂尺度太大?池昌旭林珍娜的大胆出演,藏着最纯粹的演员初心

传递满满正能量
2026-09-19 06:08:21
山西一景区“拿出3000万招NPC”引热议,景区:有这个经济实力,计划招聘100位,对知名演员能开出千万年薪

山西一景区“拿出3000万招NPC”引热议,景区:有这个经济实力,计划招聘100位,对知名演员能开出千万年薪

极目新闻
2026-09-20 18:27:21
李运当选深圳市市长

李运当选深圳市市长

上观新闻
2026-09-20 18:18:22
中美经贸磋商在美国纽约开始举行

中美经贸磋商在美国纽约开始举行

新华社
2026-09-20 22:50:08
穆帅在发布会打印出马竞两度逃红的瞬间:我们本该11打9的!

穆帅在发布会打印出马竞两度逃红的瞬间:我们本该11打9的!

懂球帝
2026-09-21 00:57:25
皇马德比客场1比2不敌马竞

皇马德比客场1比2不敌马竞

林间小温柔
2026-09-21 00:39:31
许嵩官宣结婚不到1天,女方被扒底朝天,高二和老师恋爱在一起5年

许嵩官宣结婚不到1天,女方被扒底朝天,高二和老师恋爱在一起5年

夏末moent
2026-09-20 16:10:45
名古屋亚运会花三倍预算,为啥伊朗队开幕式半路直接走人?

名古屋亚运会花三倍预算,为啥伊朗队开幕式半路直接走人?

刻面
2026-09-20 15:17:11
王楚钦再创历史,将成第一个把世界第一拱手送给日本的国乒运动员

王楚钦再创历史,将成第一个把世界第一拱手送给日本的国乒运动员

人类的关注
2026-09-06 04:32:21
39岁女明星自曝破产,20年积蓄全打水漂,至今单身,靠年迈母亲每月2000块接济生活:35岁后,这件事,千万别干!

39岁女明星自曝破产,20年积蓄全打水漂,至今单身,靠年迈母亲每月2000块接济生活:35岁后,这件事,千万别干!

In风尚
2026-09-20 12:08:16
2026-09-21 01:11:00
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
12968文章数 52065关注度
往期回顾 全部

科技要闻

谷歌承认:AI模型“黑”进3家公司

头条要闻

男子网购燃气灶防风罩一个月后妻儿中毒死亡 多方回应

头条要闻

男子网购燃气灶防风罩一个月后妻儿中毒死亡 多方回应

体育要闻

游泳2小时6金!亚运金牌榜:中国11金领跑

娱乐要闻

许嵩刚官宣结婚,冯禧黑历史就被扒

财经要闻

民企土地 被政府"无偿收储"后转手卖7亿

汽车要闻

FREELANDER神行者8开启交付 首批新车正式交付用户

态度原创

家居
时尚
旅游
亲子
健康

家居要闻

2026建博会(广州) 公装联探展交流活动

提灯游园,举杯入席 | 这个中秋,来点不一样的!

旅游要闻

看北京|天桥绝活儿再现京韵烟火

亲子要闻

一个人心中有很多个宝贝

有人倒地抽搐?!是癫痫还是中风?

无障碍浏览 进入关怀版