Este proyecto tiene como objetivo principal evaluar el speedup de una aplicación intensiva en operaciones de entrada y salida al utilizar hilos (threading) y procesos (processing) en Python. La aplicación automatiza la descarga de vídeos de YouTube y la extracción de sus audios correspondientes, utilizando las herramientas yt-dlp y ffmpeg disponibles para Linux. La aplicación permite elegir entre diferentes configuraciones de ejecución: un solo hilo, multithreading y multiprocessing con 4, 8 y 16 unidades de procesamiento.
- Brayan Camilo Urrea Jurado - 2410023 ([email protected])
- Kevin Alejandro Velez Agudelo - 2123281 ([email protected])
- Néstor David Heredia Gutierrez - 2058558 ([email protected])
La aplicación debe cumplir con los siguientes requerimientos:
- Automatizar la descarga de vídeos de YouTube.
- Extraer los audios correspondientes a los vídeos descargados.
- Utilizar yt-dlp y ffmpeg para la descarga y extracción de audio.
- Implementar tres versiones de la aplicación: un solo hilo, múltiples hilos y múltiples procesos.
- Conservar solo los audios, eliminando los vídeos descargados.
- Llevar un registro de los vídeos descargados, incluyendo la fecha de publicación en YouTube y la fecha de descarga.
- Python 3.x
- yt-dlp
- ffmpeg
Para ejecutar la aplicación, sigue estos pasos:
- Clona este repositorio en tu máquina local.
- Instala las dependencias necesarias (yt-dlp y ffmpeg).
- Ejecuta el script de Python correspondiente a la versión que deseas probar.
El aplicativo se divide en tres versiones, cada una implementando un enfoque diferente para la concurrencia:
- Un Solo Hilo: Todas las tareas se ejecutan secuencialmente en un solo hilo.
- Múltiples Hilos: Se utiliza el módulo threading para ejecutar múltiples tareas en paralelo dentro del mismo proceso.
- Múltiples Procesos: Se utiliza el módulo multiprocessing para ejecutar múltiples procesos independientes, cada uno con su propio hilo de ejecución.
Se recomienda realizar pruebas adicionales para optimizar aún más el rendimiento del procesamiento paralelo, explorando diferentes configuraciones de hardware y software, así como técnicas de optimización específicas para las aplicaciones yt-dlp y ffmpeg. Como nota adicional, se recomienda el no uso de canales no muy actualizados o en constante actualización, debido a que la aplicación falla cuando se trata de descargar videos en estreno o videos en directo, ante estos ambientes o parecidos el tiempo de descarga sobrepasa las estadísticas escritas en este informe.