问题标签 [pypy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - RPython 支持生成器吗?
RPython 是否支持生成器,因为我刚刚在 PyPy 的文档中读到一些内容说它们不支持
它们似乎很容易被翻译成像 C 这样的静态类型语言,因为每个生成步骤都是在函数调用中生成的。
有人可以解释为什么吗?或者对这个主题有更多的了解。我目前正在尝试学习编写 RPython 安全代码的基础知识。
python - fstat() 是安全(沙盒)操作吗?
我目前正在使用沙盒 PyPy 编写 Python 沙盒。基本上,沙箱通过提供一个“控制器”来工作,它将系统库调用映射到指定的函数。遵循在codepeak中找到的说明(通过设置过程)后,我意识到默认控制器不包括替换os.fstat()
,因此当我调用时崩溃open()
。具体来说,includedpypy/translator/sandbox/sandlib.py
不包含do_ll_os__ll_os_fstat
.
到目前为止,我已将其实现为:
这似乎工作正常。这安全吗?这会在沙箱中创建一个洞吗?
swig - PyPy - SWIG - QuickFix 组合
PyPy 有一些兼容性限制,尤其是关于 CPython C API。
我使用带有预编译 SWIG 绑定的QuickFix包,我正在考虑将它与 PyPy 一起使用。由于我不精通 C API 和 SWIG,我的问题是:
- PyPy 的 C API 兼容性限制是否会阻碍使用 SWIG?你能解释一下为什么吗?
- 我是否需要重新编译 SWIG 绑定才能专门使用 PyPy?那可能吗?如何?
python - Python 执行模型的最新变化?
我刚刚重读了《Learning Python 》第 3 版(2007 年末)中关于执行模型的部分,感觉还很初步。因此,我查看了第 4 版(2009 年末)中的同一部分,对它完全没有变化感到非常失望。
在 CPython 之外执行 Python 的状态如何?感觉 Jython 和 IronPython 仍然是小众项目;是否出现了其他类似的项目?Psyco 固化得足够好,可以放心使用了吗?使用 ShedSkin 的人多吗?是否有关于 PyPy 通常何时执行更快的信息?
python - 在沙盒 Pypy 中使用 socket 模块
我正在尝试允许使用 Pypy 沙盒化的子进程使用有限的协议与父进程进行通信。
在查看了 Pypy 包含的源代码后pypy/pypy/translator/sandbox/sandlib.py
,似乎有一个VirtualizedSocketProc
允许os.open
调用打开套接字。我更改了代码的一些功能(例如,允许有限端口上的 TCP 连接),但几乎没有更改。但是,我无法实际导入 Pypy 的socket
模块,因为它需要一个不存在的_socket
模块,该模块似乎位于代码的解释器级部分。
我正在尝试做的事情可行吗?如果是这样,我如何导入套接字模块?如果没有,我还能做什么?
python - PyPy C/API 访问
我一直在查看参考文档,但找不到任何提及 PyPy 的 C API。它存在吗?如果是这样,它与 CPython C API 相同吗?如果 PyPy 在 CPython 之上运行,它会改变这一点吗?
php - 单个网络服务器上的 PyPy + PHP
我正在从头开始设置网络服务器,主要用于使用 Python 编写网络应用程序。在寻找 Apache+mod_wsgi 的替代品时,看起来 pypy 确实可以很好地处理我打算用于我自己的应用程序的几乎所有东西。真的没有机会正确地使用 PyPy,我觉得这是一个很好的使用它的机会,因为我不需要服务器是防弹的。
但是,出于管理目的,我想在网络服务器上运行一些 PHP 应用程序(例如 PHPPgAdmin)。是否有一个优雅的解决方案允许我在 Apache 等 PHP 兼容的网络服务器中使用 PyPy?还是我必须在单独的端口上运行 CherryPy/Paste 或其他 WSGI 服务器之一,并在单独的端口上使用 Apache 和 mod_wsgi 来提供管理服务?
python - PyPy 比 CPython 慢得多
我一直在测试我制作的缓存系统。其目的是加速 Django Web 应用程序。它将所有内容存储在内存中。根据 cProfile,我的测试中的大部分时间都花在 QuerySet._clone() 中,结果证明效率非常低(考虑到实现,这实际上并不奇怪)。
我对使用 PyPy 加快速度寄予厚望。我有一台 64 位的机器。然而,在安装了所有必需的库之后,结果证明 PyPy 编译代码的运行速度比常规 Python 代码慢 2.5 倍,而且我不知道该怎么做。该代码受 CPU 限制(绝对没有数据库查询,因此不能选择 IO 限制)。一个测试运行大约 10 秒,所以我想 JIT 应该足够了。我使用的是 PyPy 1.5。注意——我自己没有编译源代码,只是下载了一个 64 位的 linux 版本。
我想知道 CPU 密集型代码在 PyPy 下实际运行速度变慢的频率。希望我做错了什么会阻止 PyPy 以最佳状态运行。
编辑
确切的 cPython 输出:
PyPy 1.5:
蟒蛇 2.7:
python - RPython 中的静态类型是什么?
人们经常说RPython(Python 的一个子集)是静态类型的。(例如在维基百科上。)
最初,我想知道他们如何将其添加到 Python 中,并认为他们可能已经添加了添加语句的要求,例如assert isinstance(arg1, ...)
在每个函数的开头(但我真的不敢相信)。
然后我查看了一些 RPython 代码,它看起来根本不是静态类型的。在许多情况下,编译器可能可以证明函数参数只能是某些类型,但绝对不是在所有情况下。
例如,这是 RPython 的实现string.split
:
在有关 RPython 的 PyPy 文档中,它说:“变量应该包含最多一种类型的值”。
那么,函数参数也算作变量吗?或者在什么意义上 RPython 是静态类型的?或者这实际上是错误的?