我有一个脚本,加载数百个图像,调整大小,然后组成一个更大的图像
每次都使用不同的图像集开始:
python myscript.py imageFolder/
Run Code Online (Sandbox Code Playgroud)
使用Pypy在virtualenv中运行它并没有显示出明显的速度增益(使用mprofile在~8秒内运行,pypy版本在PIL.resize中花费更多时间而在包初始化中花费更少).
这是因为JIT只为长时间运行的流程提供了优势?
如果是这样,我可以将脚本转换为守护进程(但我担心内存泄漏).
我正在寻找一些关于numpy on pypy的工作.我是一个巨大的Python粉丝,并且让它在数值/科学计算领域走向实际选择对我来说是巨大的.它显然有很长的路要走,但如果你不需要C级优化,那么开发起来会更漂亮.
我正在网站和谷歌上进行一些挖掘,但我只是找到了捐赠的链接.我应该从哪里开始直接实施在pypy中实施numpy?
谢谢
我正在研究Project Euler,并想知道我是否可以使用PyPy来加速我的解决方案.但是,我发现结果非常令人失望,因为它需要更多时间来计算.
d:\projeuler>pypy problem204.py
3462.08630405 mseconds
d:\projeuler>python problem204.py
1823.91602542 mseconds
Run Code Online (Sandbox Code Playgroud)
由于mseconds输出是使用python的time
模块计算的,所以我使用内置的基准测试命令再次运行它.
d:\projeuler>pypy -mtimeit -s "import problem204" "problem204._main()"
10 loops, best of 3: 465 msec per loop
d:\projeuler>python -mtimeit -s "import problem204" "problem204._main()"
10 loops, best of 3: 1.87 sec per loop
Run Code Online (Sandbox Code Playgroud)
PyPy报告称完成运行需要大约半秒钟.但是,我尝试了多次运行pypy problem204,输出甚至从未接近基准测试.5秒.与pypy不同,python的mtimeit结果与输出一致.pypy给了我不准确的基准,还是有些魔法我不明白?
我想使用statprof.py来分析 PyPy 中的代码。不幸的是,它似乎不起作用,它指向的行号已关闭。有谁知道如何使其工作或知道替代方案?
我目前正在尝试使用pypy,但遗憾的是无法使用pip python包管理器.
我将以下镜像添加到我的source.list:
deb http://ftp.de.debian.org/debian jessie main
Run Code Online (Sandbox Code Playgroud)
我使用apt-get安装了pypy包:
apt-get install pypy
Run Code Online (Sandbox Code Playgroud)
然后我按照pypy文档给出的步骤安装pip:
curl -O http://python-distribute.org/distribute_setup.py
curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
pypy distribute_setup.py
pypy get-pip.py
Run Code Online (Sandbox Code Playgroud)
但我无法找到pypy的pip可执行文件.
pypy的唯一点是这一点:
root@computer:/usr/local/lib/pypy2.7/dist-packages# ll
total 24
drwxr-sr-x 6 root staff 4096 mars 1 19:29 distribute-0.6.49-py2.7.egg
-rw-r--r-- 1 root staff 215 févr. 26 03:43 easy-install.pth
drwxr-sr-x 7 root staff 4096 mars 1 18:07 pip
drwxr-sr-x 3 root staff 4096 févr. 26 03:44 pip-1.5.4.dist-info
-rw-r--r-- 1 root staff 144 févr. 26 03:43 setuptools-0.6c11-py2.7.egg-info
-rw-r--r-- 1 root staff 30 mars 1 …
Run Code Online (Sandbox Code Playgroud) 我运行rpython翻译来创建一个pypy沙箱.
~/pypy-2.3.1-linux64/bin/pypy ../../rpython/bin/rpython -O2 --sandbox targetpypystandalone
Run Code Online (Sandbox Code Playgroud)
有一些警告,其中两个似乎涉及时间.
Run Code Online (Sandbox Code Playgroud)[sandbox:WARNING] Not Implemented: sandboxing for external function 'clock_gettime' [sandbox:WARNING] Not Implemented: sandboxing for external function 'clock_getres'
它的长短是在翻译完成时,运行沙箱时会出现以下输出:
'import site' failed
Python 2.7.6 (32f35069a16d819b58c1b6efb17c44e3e53397b2, Jun 11 2014, 19:06:04)
[PyPy 2.3.1 with GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>>
Run Code Online (Sandbox Code Playgroud)
然后导入时间也失败了:
>>>> import time
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named time
>>>>
Run Code Online (Sandbox Code Playgroud)
这是沙箱的预期行为吗?如果是这样,在沙盒流程中嵌入网站包等的正确做法是什么?我希望使用pip安装在那个环境中,但沙盒似乎让它变得非常困难.(当我尝试安装distribute.py时,基本上我反对导入时间,因为它需要datetime,这需要时间)
我注意到在PyPy和Python下运行的程序的内存使用有些奇怪.在PyPy下,该程序不仅使用比CPython大得多的初始内存量,而且这种内存使用量也会随着时间的推移而显着增加.在PyPy下的程序结束时,它使用大约170MB,而在CPython下运行则为14MB.
我找到了一个具有完全相同问题的用户,尽管规模较小,但是对他有用的解决方案只为我的程序提供了一点帮助pypy内存使用量会永远增长吗? 我尝试更改的两件事是将环境变量PYPY_GC_MAX设置为100MB,将PYPY_GC_GROWTH设置为1.1,并在每一代手动调用gc.collect().
我正在确定内存使用情况
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1000
Run Code Online (Sandbox Code Playgroud)
这是不同条件下的运行时和内存使用情况:
Version: time taken, memory used at end of run
PyPy 2.5.0: 100s, 173MB
PyPy with PYPY_GC_MAX = 100MB and PYPY_GC_GROWTH = 1.1: 102s, 178MB
PyPy with gc.collect(): 108s, 131MB
Python 2.7.3: 167s, 14MB
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,程序在PyPy下比CPython快得多,这就是为什么我首先转向它,但代价是内存增加了10倍.
该程序是遗传编程的一个实现,我正在发展一个超过100代的算术二叉树,人口中有200个人.树中的每个节点都有对其2个孩子的引用,这些树的大小可以增加,尽管在这个实验中它们保持相对稳定.根据应用程序,该程序可以运行10分钟到几个小时,但是对于结果,我将其设置为较小的数据集以突出显示该问题.
有没有人有任何想法a)可能导致这种情况的原因,以及b)是否可以将内存使用限制在更可敬的水平?
我无法在osx和raspbian上为pypy 4.0.0编译pandas(0.17.0).
但在两种情况下都失败了,但原因不同:
raspbian:
pandas/lib.c:84937:76: error: ‘PyDateTime_Date’ undeclared (first use in this function)
pandas/lib.c:84938:84: error: ‘PyDateTime_DateTime’ undeclared (first use in this function)
error: command 'cc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
OSX:
In file included from pandas/src/datetime_helper.h:3:
/Users/sonium/Raspbrewry/venv-pypy/site-packages/numpy/core/include/numpy/arrayscalars.h:8:3: error: typedef redefinition with different types ('struct PyBoolScalarObject' vs 'struct PyBoolScalarObject')
} PyBoolScalarObject;
Run Code Online (Sandbox Code Playgroud)
我知道大熊猫没有正式支持pypy,但是pypy不应该成为替代品吗?
当我运行命令pypy -m pip安装加密
然后我有以下错误:
cc -arch x86_64 -O2 -fPIC -Wimplicit -I/opt/pypy-5.0.1/include -c build/temp.macosx-10.10-x86_64-2.7/_openssl.c -o build/temp.macosx-10.10-x86_64 -2.7/build/temp.macosx-10.10-x86_64-2.7/_openssl.o build/temp.macosx-10.10-x86_64-2.7/_openssl.c:423:10:致命错误:'openssl/e_os2.h'文件没有发现生成#include ^ 1错误.错误:命令'cc'失败,退出状态为1
----------------------------------------
Run Code Online (Sandbox Code Playgroud)
命令"/ usr/local/bin/pypy -u -c"import setuptools,tokenize; file ='/ private/var/folders/_t/8l_tq9210xl4bzlhkspnv8br0000gn/T/pip-build-Gjhf5l/cryptography/setup.py'; exec(compile(getattr(tokenize,'open',open)(file).read() .replace('\ r \n','\n'),file,'exec'))"install --record /var/folders/_t/8l_tq9210xl4bzlhkspnv8br0000gn/T/pip-6_y8I9-record/install-record.txt --single-version-external-managed --compile"失败,错误代码为1/private/var/folders/_t/8l_tq9210xl4bzlhkspnv8br0000gn/T/pip-build-Gjhf5l/cryptography /
我有一些将数据保存到 Elasticsearch 的代码。它在 Python 3.5.2 (cpython) 中运行良好,但在 pypi3 6.0.0 (Python 3.5.3) 上运行时会引发异常。任何想法为什么?
File "/opt/venvs/parsedmarc/site-packages/parsedmarc/elastic.py", line 366, in save_forensic_report_to_elasticsearch
forensic_doc.save()
File "/opt/venvs/parsedmarc/site-packages/elasticsearch_dsl/document.py", line 394, in save
index=self._get_index(index),
File "/opt/venvs/parsedmarc/site-packages/elasticsearch_dsl/document.py", line 138, in _get_index
raise ValidationException('You cannot write to a wildcard index.')
elasticsearch_dsl.exceptions.ValidationException: You cannot write to a wildcard index
Run Code Online (Sandbox Code Playgroud) pypy ×10
python ×8
benchmarking ×1
cryptography ×1
debian ×1
memory ×1
numpy ×1
open-source ×1
pandas ×1
performance ×1
pip ×1
profiling ×1
pyopenssl ×1
python-2.7 ×1
sandbox ×1
scipy ×1