Исключение «Не удается выделить память» в Python (многопроцессорная обработка), но свободная память доступна - PullRequest
0 голосов
/ 05 марта 2020

У меня проблема в том, что какой-то python -код выдает «OSError: [Errno 12] Невозможно выделить память».

Но, похоже, у меня достаточно свободной памяти: (

Это сложный python код, который я не могу опубликовать как единое целое, но вот фрагмент кода, где вызывается process.start (). И я уже поместил некоторые выходные данные статистики памяти прямо перед start () :

from multiprocessing import Process
self.log.info("mem-info: {}".format(psutil.virtual_memory()))
self.log.info("swap-info: {}".format(psutil.swap_memory()))
self.process.start()

И self.process - это процесс ():

self.process = Process(name="lth" + laneid, target=self.run, args=())

Вывод памяти выглядит следующим образом:

mem-info: svmem(total=8375971840, available=5189591040, percent=38.0, used=2836029440, free=2907832320, active=4075716608, inactive=569372672, buffers=591847424, cached=2040262656, shared=37097472, slab=743190528)
swap-info: sswap(total=4291817472, used=0, free=4291817472, percent=0.0, sin=0, sout=0)

Stacktrace:

File "LaneThread.py", line 49, in start
    self.process.start()
File "/usr/lib/python2.7/multiprocessing/process.py", line 130, in start
    self._popen = Popen(self)
File "/usr/lib/python2.7/multiprocessing/forking.py", line 121, in __init__
    self.pid = os.fork()
OSError: [Errno 12] Cannot allocate memory

Итак, у меня много свободной памяти, но я все еще получил «Невозможно выделить память». Есть ли какая-либо другая причина, которая может вызвать это исключение «Невозможно выделить память»?

Я не знаю у меня нет идеи, что я могу найти, чтобы решить проблему: (

Код выполняется узлом jenkins под Debian10 и python 2.7 (обновление запланировано на этот год, но сейчас это невозможно) ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...