Python 在docker容器内运行的opencv3.0内存不足错误

Python 在docker容器内运行的opencv3.0内存不足错误,python,numpy,memory-management,docker,opencv3.0,Python,Numpy,Memory Management,Docker,Opencv3.0,OpenCV错误:OutOfMemoryError中内存不足(分配995522496字节失败) base_features, base_descs = detector.detectAndCompute(base_img, None) 在这条特定的线中,基本描述的长度(“len(基本描述)”约为70000。base_desc是一个numpy数组。我目前正在使用4GB内存,但它仍然显示此错误 我在docker容器中运行此代码,当我在系统中不使用容器而运行python代码时,上面的代码工作正常。首

OpenCV错误:OutOfMemoryError中内存不足(分配995522496字节失败)

base_features, base_descs = detector.detectAndCompute(base_img, None)
在这条特定的线中,基本描述的长度(“len(基本描述)”约为70000。base_desc是一个numpy数组。我目前正在使用4GB内存,但它仍然显示此错误

我在docker容器中运行此代码,当我在系统中不使用容器而运行python代码时,上面的代码工作正常。

首先,尝试运行一些代码,以查看容器进程执行期间容器的内存使用情况和限制


然后,尝试增加容器的内存限制(
-m
):请参阅“

”,正如VonC所建议的,我尝试运行docker stats。我运行了我的容器并进行了docker统计以检查容器的统计,内存使用量随着容器的增加而增加,但限制为5.028GB,如下所示

 CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O               BLOCK I/O
gigantic_cori        0.02%               4.6 GB / 5.028 GB     2.02%               44.43 MB / 20.51 MB   580.2 MB / 3.196 GB

因此,增加RAM将是上述问题的解决方案,或者优化代码以降低RAM需求。上述问题发生在容器内部,因为在来宾操作系统(Ubuntu14.04)中运行的容器只有4GB的RAM,而当我在主机操作系统(Windows 8.1)中运行代码时,它拥有的RAM是8GB,因此没有出现错误。

可能会猜测,进程大小可能会限制在docker容器中。@j.j.Hakala甚至我认为,由于每个容器都在en d a进程中,因此,我认为我必须了解在linux环境中如何为每个进程分配内存。我尝试过docker stats,并阅读了docker的文档,其中写道,当我们在docker run命令中未指定-m时,内存的使用没有任何限制。然而,我对另一个问题感到困惑,运行docker stats后得出的结论是,内存正在耗尽,没有空间让进程继续,我得到了error@kkk我同意。您可以通过某种方式限制进程内存消耗来测试它吗?(例如,根据当前程序的具体情况,通过分配一个较小的数组或打开一个较小的文件)我尝试了docker stats,并阅读了docker的文档,其中写道,当我们在docker run命令中未指定-m时,对内存的使用没有任何限制。然而,我对另一个问题感到困惑。这就是我得到的结果,内存限制约为5GB,程序使用了约4.6GB,然后每次都会弹出错误,因为容器需要另一个1GB的RAM空间,而不是possible@kkk顺便问一下,您的VirtualBox虚拟机是否设置了内存限制(docker机器使用它来攻击Linux来宾主机,您可以在其中执行docker)?有趣的反馈+1@VonC你能帮我解决这个问题吗?我已经看到了,但还没有答案。我会继续寻找。@VonC ok.Thnx对于你的反馈,它帮了我很多。如果我得到答案,我会发布它。