gpt4 book ai didi

Python 内存错误(Unix 与 Windows)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:39 24 4
gpt4 key购买 nike

我正在开发一个加载大型 JPEG2000 图像并将其转换为 TIF 的应用程序。稍后,它提取像素数据并进行一些处理。它完美地工作,除了一种情况:

当我加载最大的图像并提取数据(10956x10956 数组)时,程序崩溃了,但它只在 Windows 上崩溃——从不在 Linux 上崩溃。 (我想要一个可移植应用程序)。

我发现了这个问题,这是因为在对图像采样进行 20x20 插值时出现内存错误。

f=RectBivariateSpline(x,y,Sun_angles)

xnew = numpy.linspace(x.min(),x.max(),rows)

ynew = numpy.linspace(y.min(),y.max(),columns)

Sun_angles_new = f(xnew, ynew) #here it crashes

我还尝试了 interp2dmapcoordinates,我得到了相同的结果。

Python 应该是完全可移植的,但我的印象是针对 Unix 系统进行了优化(另请参阅:Running python on a Windows machine vs Linux)

注意:我在两台不同的计算机上运行该程序,但具有相同的处理器和 RAM。

因此...可能是什么原因?还有其他内存消耗更少的插值吗?

注意:一种解决方案是将图像分成小块并进行插值。

最佳答案

你应该检查windows下应用程序的内存使用情况。考虑到如果为每个像素分配内存,原始图像的大小将达到 ~360MB(假设是 24 位图像),这将会成倍增加,并且很容易超过 32 位地址空间的内存需求(你是Windows 应用程序限制为 ~2GB)

在 Linux 上,您可能运行的是 64 位 Linux,它运行的是 64 位版本的 Python。桌面应用程序几乎无法达到该限制(您将在地址空间用完之前用完交换空间)。

关于Python 内存错误(Unix 与 Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8267142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com