PyPy 是否在编译时进行静态类型检查以在编译时捕获类型错误?如果没有,HM 类型推断之类的东西是否有助于在编译时捕获这些错误?
我有一个使用Python 2.7.4在Spyder中开发的python脚本.使用以下命令从另一个python脚本调用此脚本:
execfile('script.py')
Run Code Online (Sandbox Code Playgroud)
我想知道如何使用PyPy运行两个python脚本(我喜欢这个,因为它比标准Python更快).谢谢!
PS:我已经在Windows中安装了PyPy.
我使用 cffi 模块来包装简单的 C 代码。问题是,我需要添加一个标志来使其编译(std=c99)。目前我有类似的东西:
from cffi import FFI
ffibuilder = FFI()
with open("test.c", 'r') as f:
ffibuilder.set_source("mymodule", f.read())
with open("test.h", 'r') as f:
ffibuilder.cdef(f.read())
if __name__ == "__main__":
ffibuilder.compile(verbose=True)
Run Code Online (Sandbox Code Playgroud)
问题是,cffi 自己调用 gcc,我想将 std=c99 添加到它调用 gcc 的标志中。我缺少任何参数吗?
(注意:我可以更改 gcc 命令本身或运行 cffi 自己使用的 gcc 命令,我想知道我是否缺少一些正确的方法来执行此操作)
我有一个使用aiohttp和pandas编写的python web服务来执行一些基本的pandas操作.我尝试使用pypy 3.5-9.0 docker(https://hub.docker.com/_/pypy/)运行它,性能非常慢,相比之下,当我使用python 3.6 docker image运行时附带的时间截图花在调用堆栈中的每个函数上,似乎一切都很慢.....任何线索?
在过去的几天里,我一直在玩Nuitka,这是一个将Python编译成可执行C/C++程序的工具.
我没有发现Nuitka的任何速度优势(与PyPy相比).那么Nuitka是什么意思?我错过了什么吗?
我在Ubuntu16.04上通过以下代码将psycopg2安装到pypy3(Python3.5.3):
\n\npypy3 -m pip install psycopg2\n
Run Code Online (Sandbox Code Playgroud)\n\n但是,我遇到了一些错误:
\n\n\n\n\nError\xef\xbc\x9ab\'您需要安装 postgresql-server-dev-XY 来构建服务器端扩展或 libpq-dev 来构建客户端应用程序。\\n\'
\n\n命令“python setup.py Egg_info”失败,/tmp/pip-install-epd368s6/psycopg2 中的错误代码为 1
\n
我在“您需要安装 postgresql-server-dev-XY 来构建服务器端扩展或 libpq-dev 来构建客户端应用程序”中找到了解决方案。
\n\n我的电脑已经安装了Postgresql9.5,所以我使用这些命令来安装:
\n\nsudo apt-get install libpq-dev\npypy3 -m pip install psycopg2\n
Run Code Online (Sandbox Code Playgroud)\n\n没有报告错误,但是当我尝试“import psycopg2”时,我得到了 ImportError:
\n\n\n\n我在“ pypy3 import psycopg2 error (PyCodec_Encoder) ”中发现了同样的错误,但没有找到解决方案。
\n\n有人知道如何修复它吗?
\n使用 CPython2 我可以编译我的 Python 源代码包python.exe -c "import mypackage"
。*.py
递归删除所有文件后,我可以简单地导入它import mypackage
并像往常一样使用它。
使用 CPython3 我可以编译我的 Python 源代码 pyckage python.exe -m compileall -b "full/path/to/mypackage"
。*.py
递归删除所有文件后,我可以简单地使用import mypackage
. 并像往常一样使用它。
这甚至可以以完全相同的方式使用 PyPy3 来完成。
令人惊讶的是,当使用 PyPy2 时,这不起作用!
编译和删除源文件后,我得到以下输出:
Python 2.7.13 (9112c8071614, Feb 06 2019, 23:10:08)
[PyPy 7.0.0 with MSC v.1500 32 bit] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>> import mypackage
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: …
Run Code Online (Sandbox Code Playgroud) 我试图找到一种方法,在合理的时间和动作中以编程方式解决 24 块滑动拼图。这是我描述的谜题中已解决状态的示例:
我已经发现 IDA* 算法可以很好地为 15 拼图(4x4 网格)完成此任务。IDA* 算法能够在非常合理的时间内找到任何 4x4 滑动拼图的最少移动次数。我运行了一个改编版对此测试 4x4 滑动拼图的代码,并且能够通过使用 PyPy 进一步显着减少运行时间。不幸的是,当这段代码适用于 5x5 滑动拼图时,它运行得非常慢。我跑了一个多小时,最终看到它完成就放弃了,而它在 4x4 网格上只运行了几秒钟。我理解这是因为随着网格的增加,需要搜索的节点数量呈指数增长。但是,我不希望找到 5x5 滑动拼图的最佳解决方案,而只是寻找接近最佳的解决方案。例如,如果给定谜题的最佳解决方案是 120 步,那么我会满意任何低于 150 步并且可以在几分钟内找到的解决方案。
是否有任何特定的算法可以实现这一点?
我想在我的 Ubuntu 上安装 PyPy 并且我希望它在系统范围内安装,这样我就可以在任何地方的终端中调用 PyPy,例如:pypy main.py
。我还想要标准的 python 和 pip 可用。
我还不是一个非常有经验的 Linux 用户,所以我迷失了。
我编写了一个 python 程序,并使用 pypy 和 python 运行它,我插入了一些计时打印来测量性能差异。在某些情况下,加速比为 10 倍,而在其他情况下则没有变化。谁能解释一下在编写程序时是否需要遵循规则以利用 pypy 提供的潜在加速?EG 避免某些语法,更喜欢某些数据结构而不是其他......
我发现加速在 12 倍到 1.5 倍之间
pypy ×10
python ×6
python-3.x ×2
algorithm ×1
cpython ×1
nuitka ×1
pandas ×1
performance ×1
psycopg2 ×1
python-cffi ×1
rpython ×1
ubuntu ×1