文档章节

怎样用python写引流脚本

o
 osc_gu9d45li
发布于 2019/05/04 17:48
字数 712
阅读 37
收藏 0

精选30+云产品,助力企业轻松上云!>>>

原文链接:老五网创圈

Python是一门非常适合处理数据和自动化完成重复性工作的编程语言,我们在用数据训练机器学习模型之前,通常都需要对数据进行预处理,而Python就非常适合完成这项工作,比如需要重新调整几十万张图像的尺寸,用Python没问题!你几乎总是能找到一款可以轻松完成数据处理工作的Python库。

然而,虽然Python易于学习,使用方便,但它并非运行速度最快的语言。默认情况下,Python程序使用一个CPU以单个进程运行。不过如果你是在最近几年配置的电脑,通常都是四核处理器,也就是有4个CPU。这就意味着在你苦苦等待Python脚本完成数据处理工作时,你的电脑其实有75%甚至更多的计算资源就在那闲着没事干!

今天我(作者Adam Geitgey——译者注)就教大家怎样通过并行运行Python函数,充分利用你的电脑的全部处理能力。得益于Python的 concurrent.futures 模块,我们只需3行代码,就能将一个普通数据处理脚本变为能并行处理数据的脚本,提速4倍。

普通Python处理数据方法

比方说,我们有一个全是图像数据的文件夹,想用Python为每张图像创建缩略图。

下面是一个短暂的脚本,用Python的内置glob函数获取文件夹中所有JPEG图像的列表,然后用Pillow图像处理库为每张图像保存大小为128像素的缩略图:

import glob

import os

from PIL import Image

def make_image_thumbnail(filename):

# 缩略图会被命名为"_thumbnail.jpg"

base_filename, file_extension = os.path.splitext(filename)

thumbnail_filename = f"{base_filename}_thumbnail{file_extension}"

# 创建和保存缩略图

image = Image.open(filename)

image.thumbnail(size=(128, 128))

image.save(thumbnail_filename, "JPEG")

return thumbnail_filename

# 循环文件夹中所有JPEG图像,为每张图像创建缩略图

for image_file in glob.glob("*.jpg"):

thumbnail_file = make_image_thumbnail(image_file)

print(f"A thumbnail for {image_file} was saved as {thumbnail_file}")

这段脚本沿用了一个简单的模式,你会在数据处理脚本中经常见到这种方法:

首先获得你想处理的文件(或其它数据)的列表

写一个辅助函数,能够处理上述文件的单个数据

使用for循环调用辅助函数,处理每一个单个数据,一次一个。

咱们用一个包含1000张JPEG图像的文件夹测试一下这段脚本,看看运行完要花多长时间:

$ time python3 thumbnails_1.py

A thumbnail for 1430028941_4db9dedd10.jpg was saved as 1430028941_4db9dedd10_thumbnail.jpg

[... about 1000 more lines of output ...]

real 0m8.956s

user 0m7.086s

sys 0m0.743s

运行程序花了8.9秒,但是电脑的真实工作强度怎样呢?

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Pytest03-pytest命令行参数

目录 3.pytest命令行参数 3.1 pytest控制台信息详解 3.2 Pytest运行结果类型 3.3 Pytest命令行参数 3.3.1 --collect-only 3.3.2 -k Expression 3.3.3 -m MarkExpr 3.3.4 -x, --exitfirst 3.3......

osc_4ox4jhek
52分钟前
19
0
protocol buffer 基础

我们知道接口传输数据的格式有XML,它是 web services 使用的传输数据的格式,在web services 中叫 WSDL。 https://www.w3school.com.cn/wsdl/index.asp 不过 web Services 已经是被淘汰的技...

osc_ee3ody6v
53分钟前
0
0
SequoiaDB监控与开发实践分析

使用背景 公司近期上线了一个新应用,底层数据库采用了国产的分布式数据库 – SequoiaDB。 因为需要将 SequoiaDB 集群纳入到公司的整个监控体系中,所以需要对 SequoiaDB 的状态、性能指标等...

osc_mf7xwvy6
54分钟前
15
0
Python探索之旅 | 第一部分第三课:初识Python的解释器

作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub)。 转载请注明出处。 原文:https://www.jianshu.com/p/a34eaffcc420 《Python探索之旅》全系列 内容简介 前言 Python 的解释器 Pyth...

osc_wobxrheh
55分钟前
17
0
Python探索之旅 | 第一部分第四课:变量的奇幻世界

作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub)。 转载请注明出处。 原文:https://www.jianshu.com/p/d88e11bc7fec 《Python探索之旅》全系列 内容简介 前言 什么是变量及变量的作...

osc_wyap8yov
55分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部