我有一些Python / Numpy程序,当它们使用太多内存时,往往会导致PC冻结/运行速度非常慢。当它用于大量内存(例如3.8 / 4GB)时,我甚至无法停止脚本或移动光标 因此,我想在达到内存使用的关键限制时自动退出程序,例如: 3GB。
我找不到解决方案了。有没有Pythonic方法来解决这个问题,因为我在Windows和Linux机器上运行我的脚本。
答案 0 :(得分:5)
您可以限制进程的内存限制,但这是特定于操作系统的。
另一个解决方案是检查psutil.virtual_memory()
的值,如果达到某个点,则退出程序。
虽然与操作系统无关,但第二种解决方案根本不是Pythonic。内存管理是我们拥有操作系统的东西之一。
答案 1 :(得分:3)
我同意,一般情况下,你想在操作系统中做到这一点 - 只是因为有可能因为可能失控的代码检查自身可能失控的行为而导致的可靠性因素。
如果在脚本中有一个强硬的要求,那么我认为我们需要更多地了解你实际在做什么。如果您有一个占用大部分内存的单个大型数据结构,则可以使用sys.getsizeof来确定该结构的大小,并且如果它变得比您想要的大,则抛出/捕获错误。
但是,如果不知道关于程序结构的更多信息,我认为它很难帮助......