标签: pypy

除了CPython之外,生产就绪的Python实现?

除了CPython,其他Python实现目前可用于生产系统?

问题

已经阐明了有关该主题的利弊.我现在想知道,如果那些更奇特的实现实际上用于必须可靠运行的系统中.(可能的例子?开源?)

编辑:我要求的代码需要Python版本> = 2.5

python ironpython pypy jython cpython

6
推荐指数
1
解决办法
1165
查看次数

在沙盒Pypy中使用套接字模块

我正在尝试允许使用Pypy沙箱的子进程使用有限协议与父进程进行通信.

在查看pypy/pypy/translator/sandbox/sandlib.pyPypy附带的源代码之后,似乎有一个VirtualizedSocketProc允许os.open调用打开套接字的代码.我已经改变了代码的一些功能(例如,允许在有限端口上进行TCP连接),但很少有变化.但是,我无法实际导入Pypy的socket模块,因为它需要一个不存在的_socket模块,它似乎位于代码的解释器级部分.

我正在努力做到可行吗?如果是这样,我如何导入套接字模块?如果没有,我还能做什么?

python sockets pypy sandbox

6
推荐指数
1
解决办法
593
查看次数

用Pypy跑来跑去

我正在尝试Pypy因为它在CPython上显示出令人印象深刻的基准.另外,我主要在代码中使用Twisted库.我现在可以运行一个使用Twisted reactor的基准脚本,所以我猜我的设置很好.但是,我不知道如何使用Pypy运行Twisted daemonizer(twistd).

pypy twisted twistd

6
推荐指数
1
解决办法
2463
查看次数

禁用标准.和Python沙箱实现中的文件I/O.

我正在尝试设置Python沙箱,并希望禁止访问标准和文件I/O. 我在正在运行的Python服务器中运行沙箱.

我已经看过像RestrictedPython和的模块了PyPy; 但是,我希望能够在运行的Python服务器中编译沙箱代码,而不是通过外部进程编译.

是否有任何其他方法,以防止进入像命令print,raw_inputopen?是否可以在运行的Python程序中编译沙箱代码的方式使用上述模块?

在最坏的情况下,你会如何阻止访问raw_input

编辑:根据本教程安全地评估Python代码,是否可以传入一个被操作的内置模块?

python io pypy file sandbox

6
推荐指数
1
解决办法
1091
查看次数

在pypy下安装zeromq

我在CPython下安装了zeromq.如何在pypy下运行它?

www.zeromq.org/

问题是zeromq需要Cython.

pypy zeromq

6
推荐指数
1
解决办法
1626
查看次数

使用MySQLdb模块和Pypy编译器

我正在尝试Pypy编译器,看看我是否可以加速我的代码.然而,我遇到麻烦的MySQLdb模块,Pypy无法找到.

我已经读过MySQLdb 1.2.4应该可以正常使用Pypy,所以我升级了模块,我测试它是CPython编译器的正确版本:

import MySQLdb
MySQLdb.__version__
>> '1.2.4'
Run Code Online (Sandbox Code Playgroud)

但是当使用Pypy时,我得到:

Python 2.7.2 (1.9+dfsg-1, Jun 19 2012, 23:23:45)
[PyPy 1.9.0 with GCC 4.7.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
And now for something completely different: ``-FIRST they ignore you, then they
laugh at you, then they fight you, then you win.-''
>>>> import MySQLdb
Traceback (most recent call last):
  File "<console>", line 1, in <module>
ImportError: No module named MySQLdb
Run Code Online (Sandbox Code Playgroud)

有帮助吗?我正在使用Ubuntu 13.04并使用进入Canonical存储库的Pypy.

python pypy mysql-python

6
推荐指数
1
解决办法
3487
查看次数

为什么使用Python生成器来遍历二叉树要慢得多?

我有一个二叉树,节点与数据交互.我最初实现了标准的邮政订单递归遍历.

def visit_rec(self, node, data):
    if node:
        self.visit_rec(node.left, data)
        self.visit_rec(node.right, data)

        node.do_stuff(data)
Run Code Online (Sandbox Code Playgroud)

我认为我可以通过使用生成器来改进它,以便我可以使用相同的遍历方法用于其他用途,而不必不断地传递相同的数据.该实现如下所示.

def visit_rec_gen(self, node):
    if node:
        for n in self.visit_rec_gen(node.left):
                yield n
        for n in self.visit_rec_gen(node.right):
                yield n

        yield node

for node in self.visit_rec_gen():
    node.do_stuff(data)
Run Code Online (Sandbox Code Playgroud)

然而,这比以前的版本(~50s到~17s)慢得多,并且使用了更多的内存.我的发电机功能版本有错吗?我更喜欢使用这种方法,但不是以牺牲性能为代价.

编辑:我最初应该提到的一点是,这些结果是在PyPy 2.3.1下获得的,而不是标准的CPython.

python recursion pypy generator

6
推荐指数
1
解决办法
1169
查看次数

是否有一些工具将cython代码库转换回纯python?

我想做一些真实的生活基准比较cpython + cython表演和纯粹的pypy实现.

我有一个非常大的cython代码库(专有),具有良好的测试覆盖率和一些基准测试,我想做的是测试针对pypy的cython性能,但我想念的是一种快速分享代码的方法.

  • 是否有一些工具可以删除所有类型的注释并将cython代码库转换回纯python代码库?

  • 或者pypy中是否有一些解析器扩展来接受忽略所有类型注释的cython代码?(甚至使用它们......)

  • 其他选择?

python benchmarking pypy cython

6
推荐指数
0
解决办法
157
查看次数

tox在Windows上哪里搜索PyPy/PyPy3?

我正在使用tox针对不同的Python解释器运行测试.tox发现我对CPython解释器的隐瞒,因为它们位于默认位置.但是,当我下载PyPy for Windows时,它是一个存档,而不是一个安装程序.我应该在哪里放置PyPy/PyPy3以便tox自动找到它们?

python pypy tox

6
推荐指数
1
解决办法
379
查看次数

如何创建使用PyPy的Conda环境?

所以这是我的问题。我设法通过以下命令使用conda安装PyPy:

conda install -c conda-forge pypy3.5
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试创建使用此pypy3可执行文件的环境时,我找不到解决方法。如果我运行pypy3,我会得到PyPy shell没有任何问题,我也可以使用pypy3代替来运行我的程序python

尽管现在,我希望能够使用PyPy创建完整的环境。我曾尝试过以下类似的事情:

conda create -n pypy3 python=pypy3
conda create -n pypy3 python=pypy3 -c conda-forge
Run Code Online (Sandbox Code Playgroud)

我尝试指定pypy3.5和其他变体,但没有任何效果。我可以在Miniconda安装箱中看到pypy3可执行文件,但找不到Conda使用它的方法。我在互联网上找不到很多东西,因为人们似乎只是在要求通过Conda安装PyPy,而与使用PyPy创建环境无关。

所以这是我的问题:

  • 是否已经有一种使用PyPy而非常规CPython创建Conda环境的方法?
  • 有没有一种方法可以迫使Conda在本地优先查看,而不是在线检查发行版?
  • 使用Conda创建环境时,是否有一种方法可以强制将可执行文件用作Python?
  • 创建常规环境,然后强迫该环境指向我的pypy3可执行文件时,会有肮脏的解决方法吗?

我不知道是否有人可以在这里提供帮助。也许解决方案已经存在,但无论如何我都找不到很多解决方案。

编辑:根据@darthbith的建议,我可以使用以下命令:

conda create -n pypy3 -c conda-forge pypy3.5
Run Code Online (Sandbox Code Playgroud)

但这并没有达到我的预期。我可以用pypy3用来获取外壳程序并执行我的Python程序,但不能将其作为常规Python版本处理。我想让PyPy像任何版本的Python一样被考虑,并能够使用pip安装软件包(大多数纯Python软件包应与PyPy一起使用)。

我知道很多人会建议我不要在这里做什么,但是我认为它只是Python的更快版本,适用于任何不依赖C库的东西。由于我正在使用纯Python库,而PyPi中的许多库都是用纯Python编写的,所以我不明白为什么我无法在这里实现我想做的事情。

python pypy conda

6
推荐指数
3
解决办法
1259
查看次数