Python编程代码有多厉害?(python编程到底有用吗)

网友投稿 238 2022-06-13


自去年年中的时候,Python荣登各大编程语言排行榜榜首,至今,Python从未让下过第一名的位置。因此,垫定了Python在编程语言界的地位。不仅如此,Python因为其语言简洁,K12也在争相学习。今天就带大家了解一下Python编程代码的厉害。

让我们举一个简单的例子,在单个文件夹中有一个图片数据集,其中有数万张图片。在这里,我们决定使用 1000 张。我们希望在所有图片被传递到深度神经网络之前将其调整为 600×600 像素分辨率的形式。以下是你经常会在 GitHub 上看到的标准 Python 代码:

import glob

import osimport cv2### Loop through all jpg files in the current folder ### Resize each one to size 600x600

for image_filename in glob.glob("*.jpg"): ### Read in the image data img = cv2.imread(image_filename) ### Resize the image

img = cv2.resize(img, (600, 600))

上面的程序遵循你在处理数据脚本时经常看到的简单模式:

1. 首先从需要处理内容的文件(或其他数据)列表开始。

2. 使用 for 循环逐个处理每个数据,然后在每个循环迭代上运行预处理。

让我们在一个包含 1000 个 jpeg 文件的文件夹上测试这个程序,看看运行它需要多久:

time python standard_res_conversion.py

在我的酷睿 i7-8700k 6 核 CPU 上,运行时间为 7.9864 秒!在这样的高端 CPU 上,这种速度看起来是难以让人接受的,看看我们能做点什么。

快的方法

为了便于理解并行化的提升,假设我们需要执行相同的任务,比如将 1000 个钉子钉入木头,假如钉入一个需要一秒,一个人就需要 1000 秒来完成任务。四个人组队就只需要 250 秒。

在我们这个包含 1000 个图像的例子中,可以让 Python 做类似的工作:

将 jpeg 文件列表分成 4 个小组;

运行 Python 解释器中的 4 个独立实例;

让 Python 的每个实例处理 4 个数据小组中的一个;

结合四个处理过程得到的结果得出最终结果列表。

这一方法的重点在于,Python 帮我们处理了所有棘手的工作。我们只需告诉它我们想要运行哪个函数,要用多少 Python 实例,剩下的就交给它了!只需改变三行代码。实例:

import glob

import osimport cv2import concurrent.futuresdef load_and_resize(image_filename):### Read in the image data img = cv2.imread(image_filename) ### Resize the image

img = cv2.resize(img, (600, 600)) ### Create a pool of processes. By default, one is created for each CPU in your machine. with concurrent.futures.ProcessPoolExecutor as executor: ### Get a list of files to process

image_files = glob.glob("*.jpg") ### Process the list of files, but split the work across the process pool to use all CPUs ### Loop through all jpg files in the current folder ### Resize each one to size 600x600 executor.map(load_and_resize, image_files)

从以上代码中摘出一行:

with concurrent.futures.ProcessPoolExecutor as executor:

你的 CPU 核越多,启动的 Python 进程越多,我的 CPU 有 6 个核。实际处理代码如下:

executor.map(load_and_resize, image_files)

「executor.map」将你想要运行的函数和列表作为输入,列表中的每个元素都是我们函数的单个输入。由于我们有 6 个核,我们将同时处理该列表中的 6 个项目!

如果再次用以下代码运行我们的程序:

time python fast_res_conversion.py

我们可以将运行时间降到 1.14265 秒,速度提升了近 6 倍!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python manual是什么意思?中文怎么翻译(manual是什么意思翻译成中文)
下一篇:计算机二级c语言编程考试怎么过?(计算机二级c语言怎么样才能考过)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~