Python在运行CV程序时无法分配超过500MB的内存(在Mac上8GB RAM Virtualbox上的Ubuntu中)

Python在运行CV程序时无法分配超过500MB的内存(在Mac上8GB RAM Virtualbox上的Ubuntu中),python,opencv,memory,virtualbox,simplecv,Python,Opencv,Memory,Virtualbox,Simplecv,在我更仔细地研究以下错误消息之前 ERROR: Traceback (most recent call last): File "polarize.py", line 13, in <module> output = img.binarize(val).invert() File "/usr/local/lib/python2.7/dist-packages/SimpleCV/ImageClass.py", line 3045, in invert return -

在我更仔细地研究以下错误消息之前

ERROR: 
Traceback (most recent call last):
  File "polarize.py", line 13, in <module>
    output = img.binarize(val).invert()
  File "/usr/local/lib/python2.7/dist-packages/SimpleCV/ImageClass.py", line 3045, in invert
return -self
  File "/usr/local/lib/python2.7/dist-packages/SimpleCV/ImageClass.py", line 4729, in __neg__
return Image(newbitmap, colorSpace=self._colorSpace)
  File "/usr/local/lib/python2.7/dist-packages/SimpleCV/ImageClass.py", line 1035, in __init__
    self._bitmap = cv.CreateImage(cv.GetSize(source), source.depth, 3)
error: Failed to allocate 614794416 bytes
错误:
回溯(最近一次呼叫最后一次):
文件“polarise.py”,第13行,在
输出=img.binarize(val).invert()
文件“/usr/local/lib/python2.7/dist-packages/SimpleCV/ImageClass.py”,第3045行,反向
回归自我
文件“/usr/local/lib/python2.7/dist-packages/SimpleCV/ImageClass.py”,第4729行,在__
返回图像(newbitmap,colorSpace=self.\u colorSpace)
文件“/usr/local/lib/python2.7/dist packages/SimpleCV/ImageClass.py”,第1035行,在__
self._bitmap=cv.CreateImage(cv.GetSize(source),source.depth,3)
错误:无法分配614794416字节
我没有想到要把这里的字节数转换成兆字节。嗯,结果是大约500MB

我现在已经为这个VirtualBox分配了超过8GB的内存(16GB的Macbook),显然这对我不再有帮助了

我需要更多的Python“空间”

顺便说一下,加载的文件是一个9MB的PNG文件,当扩展为PNG时,它会膨胀到大约80MB,当它变成未压缩的TIFF位图时,它会完全膨胀到大约800mb。然而,在本例中,看起来内存需求的完整范围(~500MB)比这个小一些。如果Python需要的话,我想为它分配2-3GB的内存。

“我的操作系统如何为进程分配内存”实际上不是一个编程问题,而是个什么问题

Ubuntu是一个现代操作系统,你不必给Python更多的内存。它将使用操作系统提供的最大空间。因为您已经为虚拟机分配了8GB的内存,所以操作系统有足够的内存可供分配

我假设您有32位Python。在32位Ubuntu上,您被限制为3 GB。在64位Ubuntu(仍然运行32位Python)上,您有将近4GB的内存。但是,32位进程的硬限制为4 GB。没有比32位地址更多的地址了

我的期望是,您确实达到了3 GB或4 GB的限制,因为某些东西(您的脚本或库)在您不再需要图像后仍保留对图像的引用。只需在内存中保留三到四个图像,您就无法再创建更多图像。如果不了解更多关于你实际计划的细节,就很难提出问题所在

如果您有正在使用的任何编译库的64位版本,则可以使用蛮力方法将其转换为在64位Ubuntu上运行的64位Python