码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python解释器之PyPy解释器


    一、PyPy解释器

    比Python快得吓人,PyPy极简入门,Python进阶必备

    1.1 问题引入

    Python的发明者说:

    “If you want your code to run faster, you should probably just use PyPy.” – Guido van Rossum (creator of Python)

    如果你想让代码运行的更快,你或许应该直接用PyPy.

    1.2 CPython解释器

    CPython是python默认的解释器,它的执行过程为:

    Python源代码 -> 字节码 -> 一句一句解释成机器语言 -> 执行

    二、相关介绍

    PyPy官网
    在这里插入图片描述

    PyPy是另外一种Python解释器,Python代码可以在不做任何改动的情况下,直接运行在PyPy上。

    2.1 PyPy执行流程

    PyPy使用Just In Time(JIT)技术把Python代码直接编译成机器语言,执行过程为:

    Python源代码 -> 机器语言 -> 执行
    在这里插入图片描述

    2.2 PyPy特性优势

    • PyPy比CPython快4.5倍;
    • 省内存,对于占用内存比较大程序(比如几百M),可以节约内存;
    • 适合长时间运行的代码;
    • 使用简单;

    2.3 PyPy局限性

    • 适合纯Python的代码;
    • 对于不是纯Python的代码(通常是调用C库的Python包,比如Numpy),可能有兼容性问题。现在它已经兼容Numpy了,但是可能有其他问题。

    2.4 建议

    • 你不需要马上用PyPy,除非你碰到了性能问题;

    • 你有必要知道它的存在,在必要的时候使用它;

    三、关键步骤

    pypy安装、使用

    3.1 下载并解压

    下载地址
    在这里插入图片描述

    3.2 配置环境变量

    将解压后的路径,添加到系统环境变量中。

    # 添加环境变量
    D:\360Downloads\pypy3.7-v7.3.9-win64
    
    # PyPy自带的pip添加到环境变量
    D:\360Downloads\pypy3.7-v7.3.9-win64\Scripts
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    3.3 给pypy3安装pip

    在这里插入图片描述

    由于 PyPy自带有pip,为了与系统自带的pip相区分,给PyPy的 pip.exe 重命名为 pypy3-pip3.exe。
    在这里插入图片描述

    pip安装Python包:

    # pip安装python包
    pypy3-pip install XXX
    
    # 执行脚本
    pypy3 pypy3-demo.py
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.4 运行python程序

    在运行python命令的地方,使用pypy3替换python命令。比如打开交互式Python,直接运行pypy3:
    在这里插入图片描述

    3.5 示例代码

    import time
    
    t = time.time()
    
    for i in range(10 ** 9):
        continue
    
    print(time.time() - t)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.6 性能对比

    CPython解释器pypy解释器加速比
    耗时(s)28.8490.65744倍

    在这里插入图片描述

  • 相关阅读:
    福利又来了,mongo还不会快来练起来!操作汇总
    Efficient DETR 论文精读
    人工智能领域的机器学习方法给我们的带来了哪些好处?
    HAproxy+nginx 搭建负载均衡集群(haproxy日志收集)
    跨境电商独立站App
    栈和队列的概念及实现
    民安智库(专业市场调查公司)开展老人体检消费者调查
    继承和实现该如何选择
    Java工具库Guava的集合工具类Iterables、Lists、Sets、Maps、Multisets、Multimaps的常用方法示例
    STM32 软件IIC 控制OLED 显示屏
  • 原文地址:https://blog.csdn.net/m0_37605642/article/details/125961165
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号