es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

fuga de memoria al utilizar opencv-python cv2.imdecode en ubuntu 16.04

Usé Google para buscar muchos problemas similares, pero aún no se han resuelto, triste.

Escena del crimen:

pip:

grpcio == 1.42.0
grpcio-tools == 1.42.0
protobuf == 3.19.1
opencv-python == 3.4.0.14
numpy == 1.19.5

sistema:

ubuntu 16.04

versión de Python:

3.6.13

Aquí está el código completo:

https://github.com/RiseInRose/cv2memoryleak_ex

Resumen:

aumento de la memoria

Aquí es donde uso mprof python para recolectar datos, línea 39, la memoria aumenta, pero no se libera, hasta llegar al oom.

Filename: greeter_server.py

Line #    Mem usage    Increment  Occurences   Line Contents
============================================================
    35 1773.4336 MiB 1773.4336 MiB           1   @profile(precision=4, stream=open(f'{time.time()}.log', 'w+'))
    36                                         def jpeg_to_np(jpeg):
    37 1773.4336 MiB   0.0000 MiB           1       try:
    38 1773.4336 MiB   0.0000 MiB           1           np_str = np.fromstring(jpeg, np.uint8)
    39 1775.6602 MiB   2.2266 MiB           1           image = cv2.imdecode(np_str, cv2.IMREAD_COLOR)
    40 1775.6602 MiB   0.0000 MiB           1           del image
    41                                                 # return image
    42                                             except:
    43                                                 traceback.print_exc()

Aquí está mi experiencia:

En mi mac. este código no es una fuga de memoria.
Intenté ejecutar el código en ubuntu 18.04, hay una fuga de memoria.
En ubuntu 16.04, hay una fuga de memoria.
También uso flask, ejecuto el código en ubuntu 16.04, uso múltiples hilos, hay una fuga de memoria.

¿Alguien podría ayudarme? ¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el código proporcionado está causando un problema de fuga de memoria en Ubuntu 16.04. La función “jpeg_to_np” parece ser la culpable ya que la memoria se incrementa y no se libera hasta que ocurre un error de memoria insuficiente.

    Basado en la experiencia compartida, parece que el problema de fuga de memoria no ocurre en otros sistemas operativos como Mac, pero sí ocurre en Ubuntu 18.04 y 16.04, lo que sugiere que podría ser un problema específico del sistema operativo.

    Otro punto a considerar es el uso de multihilo con Flask, ya que también podría contribuir a la fuga de memoria.

    Las posibles soluciones podrían incluir la actualización de OpenCV y otras dependencias, ajustando el código para gestionar mejor la gestión de la memoria, o cambiar a un enfoque diferente que reduce el uso de memoria.

    En general, puede ser necesario realizar más investigación y pruebas para identificar la causa raíz y encontrar una solución al problema de fuga de memoria.

Comments are closed.