You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Streamlit中session_state初始化打印语句重复出现的原因咨询

Streamlit打印语句多次输出的原因

这是由Streamlit的核心运行机制导致的:

  • Streamlit在页面初始化和渲染过程中,会多次从头执行整个脚本:
    • 第一次执行是「组件扫描阶段」:Streamlit会遍历脚本收集所有UI组件(比如标题、按钮)的信息,用来构建页面的初始结构;
    • 第二次执行是「渲染阶段」:完成页面的最终渲染,确保所有状态和组件正确加载显示。
  • 当count还未被添加到st.session_state时,这两次脚本执行都会触发if 'count' not in st.session_state的判断,因此print(f'initializing count!')会被执行多次。

需要注意的是,Streamlit会自动处理st.write这类组件的重复渲染,避免重复显示内容,但print是直接输出到控制台的原生Python语句,不受Streamlit的渲染逻辑管控,所以会如实反映脚本的实际执行次数。

你可以通过以下代码验证这个机制:

import streamlit as st

print("脚本正在执行")  # 控制台会多次输出这句话

st.title('Counter Example')
if 'count' not in st.session_state:
    print(f'initializing count!')
    st.session_state.count = 0
increment = st.button('Increment')
if increment:
    st.session_state.count += 1
    st.write('Count = ', st.session_state.count)

内容的提问来源于stack exchange,提问作者Amir Afghani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:33:16