Skip to content
Tutoriales
Streamlit
How to Run Streamlit Apps and Properly Optimize It

Cómo ejecutar aplicaciones de Streamlit y optimizarlas correctamente

Streamlit ha revolucionado la forma en que construimos e implementamos aplicaciones web basadas en datos. Pero, ¿cómo se ejecuta Streamlit? ¿Cómo se pueden optimizar tus aplicaciones de Streamlit para un rendimiento máximo? En esta guía completa, responderemos a estas preguntas y más, brindándote los conocimientos y herramientas que necesitas para dominar Streamlit.

Comprendiendo Streamlit

¿Qué es Streamlit? Streamlit es una biblioteca de Python de código abierto que permite a los desarrolladores crear aplicaciones web interactivas y basadas en datos con facilidad. Está diseñado para ayudar a los científicos de datos e ingenieros a optimizar su trabajo, convirtiendo scripts en aplicaciones web compartibles con solo unas pocas líneas de código.

La integración de Streamlit con Python, uno de los lenguajes de programación más populares del mundo, lo convierte en una herramienta poderosa para el análisis y la visualización de datos. Pero Streamlit no es solo una biblioteca de Python, también es una herramienta de palabras clave de alcance cercano. Esto significa que puede ayudarte a identificar y optimizar palabras clave que están cerca de clasificar en la primera página de los resultados del motor de búsqueda, aumentando la visibilidad y el tráfico de tu sitio web.

Empezar con Streamlit

La ejecución de Streamlit es sencilla, independientemente de tu sistema operativo. Ya sea que estés utilizando Windows, Linux o macOS, puedes poner en funcionamiento tu aplicación de Streamlit en poco tiempo.

Ejecutando Streamlit en Windows

Para ejecutar Streamlit en Windows, primero deberás instalarlo. Abre tu línea de comandos y ejecuta el siguiente comando:

pip install streamlit

Una vez que Streamlit esté instalado, puedes ejecutarlo ingresando el siguiente comando:

streamlit run tu_script.py

Reemplaza tu_script.py con el nombre de tu script de Python. Entonces, Streamlit se abrirá en tu navegador web predeterminado, mostrando tu aplicación para que interactúes con ella.

Ejecutando Streamlit en un Servidor

La ejecución de Streamlit en un servidor sigue un proceso similar. Después de instalar Streamlit en tu servidor, utiliza el comando streamlit run seguido de la ruta de tu script de Python. Luego podrás acceder a tu aplicación de Streamlit a través de la dirección IP de tu servidor y el número de puerto en el que Streamlit se está ejecutando.

Ejecutando Streamlit desde VS Code

Visual Studio Code (VS Code) es un editor de código popular que admite Streamlit. Para ejecutar Streamlit desde VS Code, abre tu script de Python en el editor, luego abre la terminal y ejecuta el comando streamlit run seguido de la ruta de tu script.

Crear y Ejecutar tu Primera Aplicación de Streamlit

Ahora que sabes cómo ejecutar Streamlit, es hora de crear tu primera aplicación de Streamlit. En esta sección, te guiaremos a través del proceso paso a paso, desde escribir tus primeras líneas de código hasta implementar tu aplicación en Render.

Escribir tu Primera Aplicación de Streamlit

Una aplicación de Streamlit es simplemente un script de Python que utiliza la biblioteca de Streamlit. Aquí tienes un ejemplo simple:

import streamlit as st
 
st.title('¡Hola, Streamlit!')
st.write('Esta es mi primera aplicación de Streamlit.')

Cuando ejecutes este script con Streamlit, mostrará una página web con el título "¡Hola, Streamlit!" y el texto "Esta es mi primera aplicación de Streamlit".

Implementar tu Aplicación de Streamlit en Render

Render es una plataforma en la nube que facilita la implementación de aplicaciones web, incluidas aquellas construidas con Streamlit. Para implementar tu aplicación de Streamlit en Render, deberás crear un Dockerfile que indique a Render cómo construir y ejecutar tu aplicación. Aquí tienes un ejemplo:

FROM python:3.7
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD streamlit run app.py

Este Dockerfile comienza con una imagen de Python 3.7, establece el directorio de trabajo en /app, copia los archivos de tu aplicación en la imagen, instala los paquetes de Python necesarios y finalmente ejecuta tu aplicación de Streamlit.

Una vez que hayas creado tu Dockerfile, puedes cargar tu aplicación en Render y esta se construirá y desplegará automáticamente.

Optimización de tu Aplicación de Streamlit

Las aplicaciones de Streamlit están diseñadas para ser rápidas y eficientes, pero al igual que cualquier software, siempre hay margen de mejora. En esta sección, exploraremos algunas técnicas para optimizar tus aplicaciones de Streamlit, centrándonos en mejorar el rendimiento y la capacidad de respuesta.

Mejorar el Rendimiento de la Aplicación

Streamlit proporciona mecanismos de almacenamiento en caché potentes que pueden mejorar significativamente el rendimiento de tu aplicación. Estos mecanismos de almacenamiento en caché permiten que tu aplicación siga siendo eficiente incluso al cargar datos desde la web, manipular conjuntos de datos grandes o realizar cálculos costosos.

Streamlit ofrece dos tipos principales de almacenamiento en caché: @st.cache_data y @st.cache_resource. El decorador @st.cache_data se utiliza para almacenar en caché funciones que devuelven datos, como transformaciones de marcos de datos, consultas a bases de datos o inferencias de aprendizaje automático. Por otro lado, @st.cache_resource se utiliza para almacenar en caché funciones que devuelven recursos globales, como conexiones a bases de datos o modelos de aprendizaje automático.

Aquí tienes un ejemplo de cómo usar estos decoradores:

@st.cache_data
def long_function(param1, param2):
    # Realiza cálculos costosos aquí o
    # busca datos desde la web aquí
    return data
 
@st.cache_resource
def init_model():
    # Devuelve un recurso global aquí
    return pipeline(
        "sentiment-analysis",
        model="distilbert-base-uncased-finetuned-sst-2-english"
    )

También puedes borrar todas las cachés de datos en la memoria y en el disco utilizando st.cache_data.clear() y st.cache_resource.clear().

Optimizar la Representación de la Aplicación

El rendimiento de una aplicación de Streamlit también puede verse afectado por la complejidad de su interfaz de usuario. Si tu aplicación se vuelve irresponsiva al cambiar el tamaño de la ventana del navegador o expandir/cerrar la barra lateral, podría ser debido a la representación de elementos de interfaz de usuario complejos. Una forma de optimizar la renderización de tu aplicación Streamlit es simplificar su interfaz de usuario. Por ejemplo, en lugar de usar una gran cantidad de controles deslizantes o selectores deslizantes, considera utilizar otros tipos de widgets de entrada que consuman menos recursos.

Otro enfoque es optimizar la renderización de tus gráficos. Si tu aplicación incluye gráficos complejos de Plotly, considera utilizar la opción use_container_width=True al llamar a st.plotly_chart. Esta opción asegura que tus gráficos se rendericen al tamaño óptimo para el contenedor de tu aplicación, mejorando el rendimiento de la renderización.

Desplegando aplicaciones Streamlit de forma eficiente

Al desplegar una aplicación Streamlit, es importante considerar los recursos requeridos por tu aplicación y las capacidades de la plataforma de despliegue. Por ejemplo, si tu aplicación realiza cálculos pesados o maneja grandes conjuntos de datos, es posible que necesites elegir una plataforma de despliegue con suficientes recursos de CPU y memoria.

Un error común al desplegar aplicaciones Streamlit es no tener en cuenta la optimización de memoria. Si tu aplicación utiliza una gran cantidad de memoria, puede colapsar durante el despliegue o volverse no responsable. Para evitar esto, considera utilizar técnicas como la caché, el manejo eficiente de datos y el perfilado de memoria para reducir el uso de memoria de tu aplicación.

En resumen, la optimización de una aplicación Streamlit implica una combinación de mejora del rendimiento computacional, optimización de la renderización de la interfaz de usuario y despliegue eficiente de la aplicación. Aplicando estas técnicas, puedes asegurarte de que tus aplicaciones Streamlit sean rápidas, responsivas y confiables.

Funcionalidades avanzadas de Streamlit

Streamlit no es solo una herramienta para crear aplicaciones web simples. Es una plataforma poderosa que admite una amplia gama de funcionalidades avanzadas, lo que te permite construir aplicaciones complejas e interactivas con facilidad. Una vez que te sientas cómodo con los conceptos básicos, puedes empezar a explorar las funcionalidades avanzadas de Streamlit. Estas incluyen:

  • Widgets interactivos: Streamlit admite una amplia gama de widgets interactivos, incluyendo controles deslizantes, casillas de verificación, botones de opción y más. Estos widgets permiten a tus usuarios interactuar con tu aplicación, controlando su comportamiento y visualizando datos de diferentes formas.

  • Caché de datos: Como hemos discutido anteriormente, las primitivas de caché de Streamlit pueden mejorar significativamente el rendimiento de tu aplicación. Al almacenar en caché los resultados de cálculos costosos, puedes hacer que tu aplicación sea más rápida y responsiva.

  • Estado de sesión: La funcionalidad de estado de sesión de Streamlit te permite mantener un estado entre ejecuciones, permitiendo interacciones más complejas. Por ejemplo, puedes utilizar el estado de sesión para recordar la entrada del usuario o la página actual en una aplicación de múltiples páginas.

  • Componentes: Los componentes de Streamlit te permiten ampliar las capacidades de Streamlit integrándolo con otras bibliotecas y marcos de JavaScript. Puedes utilizar componentes para crear widgets personalizados, incrustar visualizaciones interactivas y más.

Dominando estas funcionalidades avanzadas, puedes llevar tus aplicaciones Streamlit al siguiente nivel, creando aplicaciones interactivas y complejas que satisfacen las necesidades de tus usuarios.

Adicionalmente, puedes crear una herramienta de visualización de datos sin código con esta increíble biblioteca de Python de código abierto:

PyGWalker (opens in a new tab) es una biblioteca de Python que te ayuda a incrustar una interfaz de usuario similar a Tableau en tu propia aplicación Streamlit sin esfuerzo.

PyGWalker para visualización de datos en Streamlit (opens in a new tab)

Conclusión

Streamlit es una herramienta poderosa para crear aplicaciones web basadas en datos. Con su interfaz fácil de usar y sus extensas funcionalidades, permite a los desarrolladores convertir rápidamente scripts de Python en aplicaciones web interactivas. Ya sea que estés ejecutando Streamlit en tu máquina local, en un servidor o en VS Code, comenzar es sencillo. Y con las técnicas de optimización adecuadas, puedes asegurarte de que tus aplicaciones Streamlit sean rápidas, responsivas y confiables. ¿Qué esperas? Comienza a explorar Streamlit hoy mismo y descubre cómo puede transformar tus análisis de datos y flujos de visualización.

Preguntas frecuentes

  1. ¿Qué es Streamlit?

    Streamlit es una biblioteca de Python de código abierto que permite a los desarrolladores crear aplicaciones web interactivas basadas en datos con facilidad. Está diseñado para ayudar a científicos de datos e ingenieros a agilizar su trabajo, convirtiendo scripts en aplicaciones web compartibles en solo unas pocas líneas de código.

  2. ¿Cómo ejecuto Streamlit en mi máquina local?

    Para ejecutar Streamlit en tu máquina local, primero debes instalarlo utilizando pip. Una vez instalado, puedes ejecutar Streamlit ingresando el comando streamlit run your_script.py en tu consola de comandos, reemplazando your_script.py con el nombre de tu script de Python.

  3. ¿Cómo puedo optimizar mi aplicación Streamlit?

    Puedes optimizar tu aplicación Streamlit utilizando las primitivas de caché de Streamlit, simplificando la interfaz de usuario de tu aplicación y desplegándola de manera eficiente. Estas técnicas pueden ayudar a mejorar el rendimiento de tu aplicación, haciéndola más rápida y responsiva.