python прервать процесс, если потребление памяти слишком велико - PullRequest
0 голосов
/ 02 апреля 2020

Я использую модуль, и иногда он дает сбой из-за потребления памяти. Он завершается SIGKILL 9 и сценарий прерывается. Однако я не могу получить доступ к l oop, в котором происходит потребление памяти.

Вот как это выглядит сейчас:

import module
output = module.function(args)

и вот как это должно выглядеть:

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

Вы знаете, как это реализовать? Мой пример только для лучшего понимания, решение должно быть таким, где я не получаю SIGKILL, когда слишком много памяти используется.

1 Ответ

1 голос
/ 02 апреля 2020

Это может работать:

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)
...