为什么pypy无法识别我的python 2.7 / 3.4模块和软件包?

时间:2016-10-25 02:56:46

标签: python-2.7 memory python-3.4 pypy

我使用python script.pypython3 script.py运行我的python代码。 (第一个基于2.7,第二个基于3.4)。但是,最近我正在研究一种在计算开销方面要求很高的代码。我不是python的专家,以加快我的代码(它使用了很多兼容python 2.7和3.4两个版本的其他例程)。当代码中我的函数的.hdf5输入文件大约为1 Mbi时,代码正在运行并产生结果,即使速度很慢。但是当函数的.hdf5输入文件大约为1 Gbi时,代码几乎永远不会结束,我最终会得到一个" MemoryError:"

Traceback (most recent call last):
  File "myscript.py", line 29, in <module>
    gizmo.analysis.Image.plot_image(part, 'gas', 'mass.hydrogen.neutral', 'histogram', [0,1],[0,1,2], distance_max, distance_bin_width_Gas, distance_bin_number, part_indices=part_indices, write_plot=write_plot, plot_directory=plot_directory, background_color=background_color, use_column_units=True)
  File "/home/username/Desktop/Projects/PaperMaterials/DM_Dominated_Objects/NewFolder2/covering_fractions/Simulations/gizmo/gizmo_analysis.py", line 817, in plot_image
    weights = part[spec_name].prop(weight_prop_name, part_indices)
  File "/home/username/Desktop/Projects/PaperMaterials/DM_Dominated_Objects/NewFolder2/covering_fractions/Simulations/gizmo/gizmo_io.py", line 145, in prop
    self.prop(property_name.replace('mass.', 'massfraction.'), indices))
  File "/home/username/Desktop/Projects/PaperMaterials/DM_Dominated_Objects/NewFolder2/covering_fractions/Simulations/gizmo/gizmo_io.py", line 157, in prop
    values = (1 - self.prop('massfraction', indices)[:, 0] -
  File "/home/username/Desktop/Projects/PaperMaterials/DM_Dominated_Objects/NewFolder2/covering_fractions/Simulations/gizmo/gizmo_io.py", line 65, in prop
    return self[property_name][indices]
MemoryError

在这个网站上做了一些搜索之后,我注意到我可以用pypy运行python代码来加速它们。由于我在其存储库中使用Fedora 21(32位)操作系统,其中包含pypy 2.4版本,因此我能够成功安装此版本的pypy。但是,当我尝试使用命令行pypy myscript.py而不是上面提到的代码运行我的代码时,我留下了错误消息:

  

文件&#34; app_main.py&#34;,第75行,在run_toplevel文件&#34; myscript.py&#34;中,   第1行,in       import numpy as np ImportError:没有名为numpy的模块

pypy似乎无法识别所有python模块和包,包括这个特定的模块和包。

鉴于我想坚持使用Fedora 21 Linux发行版,以便所有python模块和软件包都被pypy识别,从而产生更快的代码,那么对我来说最好的建议是什么?

我可以发布myscript.py的内容,但我不确定这是否会有所帮助,因为我在其中使用了很多其他例程。

1 个答案:

答案 0 :(得分:1)

PyPy 2.4是一个相当过时的版本,不支持numpy(即使你试图单独安装它)。

在任何情况下,即使是全新版本的PyPy也不太可能减少重量级程序的内存使用量。

如果您在一个进程中以大约1-3GB的数据进行MemoryError,在32位操作系统上,那么我似乎很清楚您需要一个64位操作系统。