利用concurrent.futures加速Python数据处理:3行代码提升4倍效率
需积分: 0 113 浏览量
更新于2024-08-05
收藏 578KB PDF 举报
在本文中,作者Adam Geitgey探讨了如何利用Python进行数据处理时提升性能,特别关注的是如何通过并行计算来加速常规脚本。Python虽然以其易学性和灵活性著称,但其单线程执行可能会限制在多核处理器上的性能。文章提到,当处理大量数据时,如处理图像文件夹中的JPEG图像,通过创建缩略图,单个进程可能导致电脑资源浪费。
传统的Python处理方法是使用单个进程,例如通过`glob`获取文件夹中的JPEG图像,然后逐个使用`PIL`库处理这些图像。然而,这种方法的瓶颈在于CPU的利用率不足。作者提出了一种利用`concurrent.futures`模块实现并行化的技巧,只需要3行代码即可显著提升效率。
首先,导入所需的库,包括`glob`, `os`, 和 `PIL`。接下来,定义一个名为`make_image_thumbnail`的函数,它接收一个图像文件名,打开图片,缩放至128x128像素,并保存为缩略图。在传统实现中,这段代码会顺序执行,对于大量图像来说可能耗时。
并行处理的实现则是利用`concurrent.futures`模块的`ThreadPoolExecutor`或`ProcessPoolExecutor`。在新版本的代码中,可以创建一个线程池或进程池,将处理图像的任务分发到多个CPU核心上。通过将`make_image_thumbnail`函数包装在一个`ThreadPoolExecutor`或`ProcessPoolExecutor`的`submit`方法中,任务会被自动并行化。这样,电脑的多个CPU核心可以同时处理不同的图像,从而达到4倍于单线程的处理速度。
例如,使用`ThreadPoolExecutor`的代码可能如下所示:
```python
from concurrent.futures import ThreadPoolExecutor
def parallel_process_images(image_files):
with ThreadPoolExecutor(max_workers=4) as executor:
thumbnail_filenames = list(executor.map(make_image_thumbnail, image_files))
return thumbnail_filenames
image_files = glob.glob("*.jpg")
thumbnails = parallel_process_images(image_files)
```
在这个并行版本中,`max_workers`参数设为4,表示使用4个线程同时处理。`executor.map`会将`image_files`中的每个文件名作为单独任务提交,每个线程独立处理一块数据,最终返回所有缩略图的文件名列表。
通过这种方式,作者展示了如何利用Python的并行计算能力,通过简单的代码调整,极大地提高了数据处理脚本的执行效率。这对于那些需要处理大量数据的场景,如图像处理、数据分析等领域,具有实际的应用价值。
2023-03-15 上传
2017-12-25 上传
2020-09-22 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
陈后主
- 粉丝: 39
- 资源: 340
最新资源
- 近探拓客软件-实现日更新的全国工商数据采集的工具-工商数据采集工具免费下载V21.4.1
- telescope_hoogle:望远镜的Hoogle搜索集成
- passwordGenerator:此分配使用math.random为用户生成密码
- dotnet C# 根据椭圆长度和宽度和旋转角计算出椭圆中心点的方法.rar
- ProjectManager:.NET Core中的简单项目管理
- Muzisung_FE:这是无知项目前端的存储库。
- Mysis_DVM_Modeling:我的高级论文项目“为 Diluviana 的 Diel 垂直迁移模式建模”的代码和头脑风暴。
- torch_spline_conv-1.2.1-cp36-cp36m-linux_x86_64whl.zip
- CMTraerPhysics:Traer v3.0物理引擎的Objective-CCocoa端口; 与iOS演示应用程序
- bilingual-pdf:由英文PDF生成双语PDF,回归原生加速长篇英文阅读!
- js-demo:关于本人博客中关于js的使用的代码示例
- 清水混凝土模板支撑施工方案.zip
- 来自“菜鸟教程”JavaScript实例练习【二】web.zip
- 仿天猫静态页面 登陆/注册/首页/天猫超市页/购物车/手机列表页 Tmall.zip
- 淘特新闻管理系统 v4.0.4
- Class-33