python 如果内存消耗过高则中断进程

python break process if memory consumption is to high

我正在使用一个模块,有时它会因为内存消耗而崩溃。它由 SIGKILL 9 终止,脚本被中断。但是我无法访问发生内存消耗的循环。

现在是这样的:

import module
output = module.function(args)

它应该是这样的:

import module
if ramconsumption(module.function(args)) > 999:
     output = None
else:
     output = module.function(args)

你知道如何实现这个吗?我的示例只是为了更好地理解,解决方案应该是当消耗过多内存时我没有收到 SIGKILL 的解决方案。

这可能有效:

import os
import psutil
import module
import threading

def checkMemory():
    while True:
        process = psutil.Process(os.getpid())
        memoryUsage = process.memory_info().rss #in bytes
        if memoryUsage > amount:
            print("Memory budget exceeded")
            break
    os._exit(0)

threading.Thread(name="Memory Regulator", target=checkMemory).start()

output = module.function(args)