Streamlit
1 Introduction to Streamlit
1.1 What is Streamlit?
1.2 Why use Streamlit?
1.3 Setting up the environment
1.4 Creating your first Streamlit app
2 Basic Components
2.1 Text elements
2.1 1 Displaying text
2.1 2 Formatting text
2.2 Data display elements
2.2 1 Displaying data frames
2.2 2 Displaying tables
2.3 Input widgets
2.3 1 Text input
2.3 2 Number input
2.3 3 Date input
2.3 4 Dropdown selection
2.3 5 Slider
2.3 6 Checkbox
2.3 7 Radio buttons
2.3 8 Buttons
3 Advanced Components
3.1 Interactive widgets
3.1 1 Multiselect
3.1 2 File uploader
3.1 3 Color picker
3.2 Media elements
3.2 1 Displaying images
3.2 2 Displaying videos
3.2 3 Displaying audio
3.3 Chart elements
3.3 1 Line chart
3.3 2 Bar chart
3.3 3 Area chart
3.3 4 Scatter chart
3.3 5 Map chart
4 Layout and Styling
4.1 Layout components
4.1 1 Columns
4.1 2 Tabs
4.1 3 Expander
4.2 Styling elements
4.2 1 Custom CSS
4.2 2 Theming
4.2 3 Adding custom fonts
5 State Management
5.1 Session state
5.1 1 Managing state across reruns
5.1 2 Persisting state
5.2 Caching
5.2 1 Caching functions
5.2 2 Caching data
6 Deployment
6.1 Deploying to Streamlit Sharing
6.1 1 Setting up Streamlit Sharing
6.1 2 Deploying your app
6.2 Deploying to other platforms
6.2 1 Deploying to Heroku
6.2 2 Deploying to AWS
6.2 3 Deploying to Google Cloud
7 Best Practices
7.1 Writing clean and maintainable code
7.2 Optimizing performance
7.3 Handling errors and exceptions
7.4 Version control with Git
8 Advanced Topics
8.1 Integrating with other libraries
8.1 1 Integrating with Pandas
8.1 2 Integrating with Plotly
8.1 3 Integrating with TensorFlow
8.2 Building complex apps
8.2 1 Creating multi-page apps
8.2 2 Handling authentication
8.2 3 Building interactive dashboards
8.3 Custom components
8.3 1 Creating custom widgets
8.3 2 Extending Streamlit with custom components
9 Case Studies
9.1 Building a data exploration app
9.2 Building a machine learning model deployment app
9.3 Building a real-time data visualization app
5 2 Caching Explained

2 Caching Explained

Key Concepts

Explanation

1. Caching

Caching is a technique used to store the results of expensive computations so that they can be reused without recalculating them. This is particularly useful in Streamlit applications where the same data or computation might be needed multiple times.

2. st.cache

st.cache is a decorator provided by Streamlit that allows you to cache the output of a function. When the function is called with the same arguments, Streamlit will return the cached result instead of executing the function again.

3. Cache Expiry

Cache expiry refers to the mechanism by which cached data is invalidated and refreshed. This is important to ensure that the data remains up-to-date. Streamlit provides options to set cache expiry based on time, data changes, or other conditions.

4. Performance Optimization

Using caching can significantly improve the performance of your Streamlit application by reducing the need for redundant computations. This leads to faster load times and a more responsive user experience.

Examples

Example 1: Basic Caching with st.cache

import streamlit as st

@st.cache
def expensive_computation(a, b):
    return a * b

result = expensive_computation(10, 20)
st.write(result)
    

Example 2: Cache Expiry

import streamlit as st
import time

@st.cache(ttl=60)  # Cache expires after 60 seconds
def fetch_data():
    time.sleep(5)  # Simulate a delay
    return "Data fetched at " + time.ctime()

data = fetch_data()
st.write(data)
    

Analogies

Think of caching as a recipe book. When you cook a dish for the first time, you write down the recipe and the ingredients. The next time you want to cook the same dish, you can refer to the recipe book instead of starting from scratch. Similarly, st.cache allows you to store the results of computations so that they can be reused, saving time and effort.

By mastering caching in Streamlit, you can create efficient and responsive applications that provide a better user experience.