0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

加快运行Python速度的五种技巧

如意 来源:Python学会 作者:Huangwei AI 2021-01-04 17:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

我们都知道就速度而言,Python是比Java或C慢得多的语言。Python是动态类型化的语言,这意味着它的变量类型未预定义。动态类型是一把双刃剑,它成就了Python成为一种优雅的语言,同时也让Python运行速度减慢。让我们看看一些可能对您的整体代码性能产生重大影响的小技巧。

1. 了解你的内置函数

这一技巧有助于节省您的时间和时间与您的代码。当我开始学习Python的时候,我以前从不使用内置函数,所以为了完成我的绝对值代码,我会运行一个for循环而不是使用abs()。为了把一个字符转换成大写字母,我甚至会把它转换成与大写字母等价的ASCII字符,因为我拒绝学习字符串函数。

如果你对Python是认真的,那么学习所有的Python内置函数是值得的,因为它不仅使你的代码更整洁、更可重用,你还可以通过简单地使用Python提供给你的东西来避免代码中人为的低效率。

2. A,B=B,A

我确信您以前使用过“temp”作为占位符变量来交换两个元素。我能告诉你的是,这个方法只在课堂上使用,不应该在编程时使用。

相反,可以通过将变量写成a,b = b,a 来进行简单的变量交换。这将在一行中切换所有变量,并防止解释器超过三个(temp, a,b交换方法)。

这是一个小小的修复,可以节省几分之一秒的时间——但从长远来看,这些时间会累积起来。

3. 只在函数内导入

作为一个初学者,我们都喜欢大量导入我们认为在代码顶部需要的所有东西。我记得有一次我导入了NumPy, Pandas, Scipy, Warnings, Math, Math, Os等等,当我完成我的代码时,我只使用了三个库。这会耗尽你电脑的内存。

相反,在相应的函数中导入所需的库(如果多个函数需要相同的库,则需要多次导入)。这意味着解释器只会在你调用函数时完成导入,而不是在代码的开头。现在Python库被缓存了,所以当你调用不同的函数时,它不会在每次导入时占用额外的时间。然而,当您最终导入顶部的所有内容,甚至不使用代码中的一些函数时,它确实会占用更多的时间。

4. 使用Numba

这是一个小众技巧,主要帮助使用NumPy或科学编程的人。Numba是一个Python JIT编译器,它对函数应用装饰器,将一些函数转换为超快的字节代码(几乎与C一样快)。Numba开始因其简单和庞大的功能而出名。

Numba目前也支持其他功能,但是,我认为它目前主要是为科学Python开发人员提供的。

5. 从集合中检查,而不是从列表中

这是Python优化书中最古老的技巧之一。如果存在元素,不要在列表中搜索。相反,将列表设置为set(set(list)),然后执行检查“element in set(list)”。这个小小的改变将提高您的运行时效率,因为Python使用了可调整大小的哈希表,将平均时间复杂度提高到了O(1)。

然而,遍历集合并不比遍历列表快。
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66865
  • 源代码
    +关注

    关注

    96

    文章

    2953

    浏览量

    69686
  • python
    +关注

    关注

    57

    文章

    4859

    浏览量

    89617
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Termux中调试圣诞树Python代码

    在Termux中调试Python代码(以圣诞树立例)非常简单,核心分为环境准备、代码编写、运行调试三个步骤,下面一步步教你操作: 一、环境准备(首次使用需做) Termux默认可能没有Python
    发表于 12-09 09:02

    Pico Technology发布Python软件包pyPicoSDK

    现有 PicoSDK 的基础上构建,使工程师、开发人员和业余爱好者能够创建 Python 脚本,更加快速方便地控制其 PicoScope 设备。
    的头像 发表于 09-29 15:03 664次阅读

    termux调试python猜数字游戏

    保存并运行 - `Ctrl+O` → `Enter` 保存文件 - `Ctrl+X` 退出编辑器 - 运行命令: ```bash python guess_number.py ``` 2. 游戏
    发表于 08-29 17:15

    termux如何搭建python游戏

    termux如何搭建python游戏 Termux搭建Python游戏开发环境的完整指南 一、Termux基础环境准备 Termux是一款无需root即可在安卓设备上运行的Linux终端
    发表于 08-29 07:06

    python app不能运行怎么解决?

    我使用helloword的模板,上传了IG502,但不能运行,请大神帮忙。系统日志如下:sntpc[1226]: ntp request error: 113, No route to host
    发表于 08-06 06:27

    STM32IDE如何设定代码到ITCM中运行

    近期使用STM32MUX生成STM32IDE的代码(MCU是STM32H743),目前希望可以将部分代码定位到ITCM中运行加快处理速度,关于代码中的.id链接文件,该部分资料比较少,目前我只
    发表于 06-24 06:45

    零基础入门:如何在树莓派上编写和运行Python程序?

    在这篇文章中,我将为你简要介绍Python程序是什么、Python程序可以用来做什么,以及如何在RaspberryPi上编写和运行一个简单的Python程序。什么是
    的头像 发表于 03-25 09:27 1556次阅读
    零基础入门:如何在树莓派上编写和<b class='flag-5'>运行</b><b class='flag-5'>Python</b>程序?

    请问是否可以使用单个输入图像运行人脸检测MTCNN Python演示?

    是否可以使用单个输入图像运行人脸检测 MTCNN Python* 演示?
    发表于 03-06 08:15

    创建OpenVINO™ Python脚本,运行可执行文件时遇到的报错怎么解决?

    创建OpenVINO™ Python 脚本: from openvino.inference_engine import IECore ie = IECore() print(\"
    发表于 03-05 10:20

    无法在Windows Subsystem for Linux 2上使用对象检测Python演示运行YoloV4模型?

    在 WSL2 上运行对象检测 python 演示。 使用 CPU 运行 object_detection_demo.py 时遇到错误: OpenCV: FFMPEG: tag
    发表于 03-05 08:43

    是否可以使用OpenVINO™部署管理器在部署机器上运行Python应用程序?

    使用 OpenVINO™部署管理器创建运行时软件包。 将运行时包转移到部署机器中。 无法确定是否可以在部署机器上运行 Python 应用程序,而无需安装OpenVINO™ Toolk
    发表于 03-05 08:16

    运行OVModelForCausalLM Python模块时出错了,怎么解决?

    创建了一个自定义 Python* 代码,类似于遵循 240-dolly-2-instruction 的 Jupyter 笔记本。 OVModelForCausalLM Python* 模块运行时出错。
    发表于 03-05 06:44

    类网线传输速度可以达到多少

    类网线(CAT5e)的传输速度可以达到1000Mbps(即1Gbps)。以下是对超类网线传输速度的详细分析: 一、理论传输速度
    的头像 发表于 02-25 10:14 1.1w次阅读

    类网线与类网线区别

    随着网络技术的发展,数据传输速度和网络稳定性的要求越来越高。在众多网络连接介质中,网线因其稳定性和成本效益而广泛使用。类网线(Cat 5)和超类网线(Cat 5e)是两常见的网线
    的头像 发表于 12-28 11:37 9337次阅读

    安徽顺丰与中原快运签约,共筑B2B物流合作新标杆

    近日,顺丰集团传来喜讯,安徽顺丰与中原快运在合肥正式签署了合作协议。此次签约标志着双方在B2B、F2B等物流领域的深入合作即将全面展开,共同致力于构建一个更加综合、高效的物流服务体系。 签约仪式上
    的头像 发表于 12-16 10:31 1085次阅读