Память не освобождается при использовании потоков в процессе - PullRequest
0 голосов
/ 28 мая 2020

Привет, я новичок в Python и хотел бы получить помощь по следующей проблеме. Я создаю процесс для запуска слушателей очереди для использования сообщений RabbitMQ. В рамках процесса я создаю потоки для обработки входящих запросов.

if __name__ == "__main__":
    mqstart= Listener("start", MQStart)
    mqprocess = Listener("process", MQProcess)
    mqcomplete = Listener("complete", MQComplete)
    p1 = mp.Process(target=mqcomplete.listen)
    p2 = mp.Process(target=mqstart.listen)
    p3 = mp.Process(target=mqprocess.listen)
    p1.start()
    p2.start()
    p3.start()
    p1.join()
    p2.join()
    p3.join()

def listen

self.mqclient.start_consuming(self.process, queue=self.queue)

def process

/*
Some code here
*/
thread = threading.Thread(target={One of the stages (MQStart/MQProcess/MQComplete) as per incoming message}.start)
thread.start()
while thread.is_alive():
      self.mqclient.process_data_events()
      self.mqclient.sleep(0.1)

thread.join()

Но иногда память не освобождается из контейнеров даже после того, как сообщения потреблены и обработаны. Для обработки запросов определены 12 контейнеров и соответствующий балансировщик нагрузки. Может ли кто-нибудь помочь мне сообщить, в чем может быть проблема?

...