【问题标题】:Usage of pypy compilerpypy编译器的使用
【发布时间】:2012-09-14 20:55:56
【问题描述】:

仅使用 python 和使用 pypy 编译器时,python 编程有区别吗?我想尝试使用 pypy,以便我的程序执行时间变得更快。在 python 中有效的所有语法是否也适用于 pypy?如果没有区别,你能告诉我如何在 debian lunux 上安装 pypy 以及在 pypy 上的一些用法示例吗?除了描述之外,谷歌没有包含太多关于 pypy 的信息。

【问题讨论】:

    标签: python python-3.x python-2.7 pypy


    【解决方案1】:

    来自pypyfeatures page

    PyPy 1.9 实现 Python 2.7.2 并在 Intel x86 (IA-32) 和 x86_64 平台,ARM 和 PPC 正在进行中。它支持所有 核心语言,通过了 Python 测试套件。

    这意味着您用 Python 2.7 编写的几乎所有代码都可以工作。唯一值得一提的例外是一些用 C 编写的 python 扩展,例如numpy

    安装应该相当简单,你可以download a linux binary from here。然后简单地提取解释器。从这一点开始,您可以像使用普通 python 解释器运行它们一样运行您的 python 程序。

    在命令行,而不是:

    python my_program.py
    

    用途:

    path/to/where/you/installed/pypy my_program.py
    

    有关如何/为什么要使用 pypy 的示例,请查看 PyCon 2012 中的 this video

    【讨论】:

    • 另请参阅pypy.org/compat.html,它列出了 PyPy 与当前 2.x CPython 之间的所有主要已知差异,并提供了所有已知差异的链接,详细程度极低。
    • 一般来说pypy不是更快吗?当我使用 pypy 执行我的程序时,它所花费的时间是正常执行 python 脚本的两倍。奇怪……!!
    • Pypy 在很多情况下会更快,但不是全部。您将更有可能在更大、执行时间更长的程序中看到更大的加速。这里有 CPython 和 PyPy 在许多不同任务上的速度比较:speed.pypy.org 请注意,PyPy 在某些方面的表现要好于其他方面。
    【解决方案2】:

    pypy 是 python 语言的兼容替代实现。这意味着几乎没有(有意的)差异。少数区别之一是 pypy 不使用引用计数。这意味着,例如,您必须手动关闭文件,当您的文件变量超出 CPython 的范围时,它们不会自动关闭。

    【讨论】:

    • 很少种有意的语法差异”?相对于没有?你能给出任何语法差异吗?
    • 我太马虎了。我的意思是差异,而不是具体的语法差异。
    • 文件自动关闭,你不能指望它立即发生。所以open('foo', 'w').write('test'); print open('foo', 'r').read() 不太可能打印“测试”。但这无论如何都是糟糕的 Python,因为 (a) 官方 Python 文档不保证会使用它,更重要的是 (b) 依赖于超出范围的事情触发的副作用对方式产生有意义的影响您的程序运行严重违反“显式优于隐式”。
    猜你喜欢
    • 2016-09-19
    • 2013-06-20
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    相关资源
    最近更新 更多