网站建设技术分析/天津网站建设优化
streamlit是什么
streamlit
是一个开源的python
库,它能够快速的帮助我们创建定制化的web
应用,而且还非常便于和他人分享,特别是在机器学习和数据科学领域。整个过程不需要你了解任何前端的知识,包括html
、css
、javascript
等,对非前端开发人员非常的友好。
streamlit安装
streamlit
要求python
版本大于等于3.6,可以直接使用pip
进行安装
pip install streamlit
安装成功后,使用其内置的hello app
测试,执行命令
streamlit hello
服务启动后,它会自动帮我们打开页面,地址是 http://localhost:8501
可以看到,streamlit
默认使用端口8501
除此之外,streamlit
官方还提供了一个稍复杂的应用,它结合了yolov3
的目标检测算法,仓库地址:https://github.com/streamlit/demo-self-driving,感兴趣的可以去研究研究,代码简短,但功能完整
那么,针对我们自己写的源码文件,该怎么运行呢?其实也非常简单,比如源码文件是app.py
,那么可以执行
streamlit run app.py
这里再说2个常用的命令
streamlit docs 查看文档
streamlit cache clear 清缓存
streamlit常用组件
按钮
import streamlit as stbutton = st.button('按钮')
文本输入框
import streamlit as stst.text_input('请输入最喜欢的编程语言', key="name")
文本显示
import streamlit as stst.write('Hello streamlit.')
streamlit
完美支持markdown
语法,可以直接使用write
方法,来看示例
import streamlit as stst.write("""# 一级标题## 二级标题### 三级标题**强调**>这是引用. python . java . c/c++ . rust
""")
除了write
方法,streamlit
还提供了text
方法,同样可以显示文本信息
import streamlit as stst.text('Hello streamlit.')
标题
import streamlit as stst.title('title')
除了title
,streamlit
还提供了header
和subheader
import streamlit as stst.header('header')
st.subheader('subheader')
滑动条
import streamlit as stnumber = st.slider('Pick a number', 0, 100)
选择框
import streamlit as stflag = st.checkbox('Yes')
单选按钮
import streamlit as stlanguages = ['python', 'c', 'rust', 'c++']st.radio('Pick a language', languages)
下拉选择框
import streamlit as stst.selectbox('用过哪几种编程语言?', ('python', 'c', 'java', 'rust'))
日期选择器
import streamlit as stdate = st.date_input('Pick a date')
颜色选择器
import streamlit as stcolor = st.color_picker('Pick a color')
文件选择器
import streamlit as stfile = st.file_uploader('Pick a file')
streamlit的其它功能
显示json
import streamlit as stst.json({"code": 0,"data": {"sex": "female","age": 18,"score": 100}
})
显示代码
from numpy.core.arrayprint import _leading_trailing
import streamlit as stcode = """def func():print('Hello streamlit.')
"""
st.code(code, language='python')
显示pandas中的dataframe
from numpy.core.arrayprint import _leading_trailing
import streamlit as st
import pandas as pd
import numpy as npdf = pd.DataFrame(np.random.randn(50, 5), columns=('col %d' % i for i in range(5)))
st.dataframe(df)
最后一句中的st.dataframe(df)
可以用st.write(df)
来代替,效果一样
显示表格
import streamlit as st
import pandas as pd
import numpy as npdf = pd.DataFrame(np.random.randn(50, 5), columns=('col %d' % i for i in range(5)))
st.table(df)
与上边的dataframe
不同的是,表格会将所有数据都显示出来,而没有了滚动条
指标性数据显示
这里还需要安装另一个库streamlit-metrics
,执行安装命令pip install streamlit-metrics
即可
import streamlit as st
from streamlit_metrics import metric_rowst.write("一周数据统计")
metric_row({"关注人数": 100,"点赞人数": 200,"在看人数": 300,"分享人数": 400}
)
streamlit的会话状态和回调
会话状态session state
在浏览器中打开新的页面,就创建了一个会话(session
)。会话状态是页面rerun
(并非类似F5
的页面刷新)时数据交互的一种方式。
看个计数的示例
import streamlit as stst.title('Hello streamlit.')
counter = 0increment = st.button('Increment')
if increment:counter += 1st.write('Count= ', counter)
可以看到只有第一次点击按钮时,Count
增加了1,后面的点击,counter
都不会改变,这显然跟我们的预期是不一样的。
我们修改下上面的代码
from typing import Counter
import streamlit as stst.title('Hello streamlit.')
if 'counter' not in st.session_state:st.session_state.counter = 0increment = st.button('Increment')
if increment:st.session_state.counter += 1st.write('Count= ', st.session_state.counter)
这样功能就正常了,每点击一次按钮,Count
就加1
回调callbacks
回调(callbacks
)是一个python
函数,它在输入组件更改时被调用,比如按钮被点击、滑动条被拉拽等。
针对上边的示例,使用callbacks
修改一下
from typing import Counter
import streamlit as st# callbacks
def increment_counter():st.session_state.counter += 1st.title('Callbacks')
if 'counter' not in st.session_state:st.session_state.counter = 0st.button('Increment', on_click=increment_counter)
st.write('Count= ', st.session_state.counter)
代码执行的效果是一样的。这是无需传参的示例,如果需要数据交互,可以使用args
或kwargs
,看下面的示例
import streamlit as stst.title('Callbacks with args')
if 'counter' not in st.session_state:st.session_state.counter = 0increment_value = st.number_input('Enter a value', value=0, step=1)def increment_counter(increment_value):st.session_state.counter += increment_valueincrement = st.button('Increment', on_click=increment_counter,args=(increment_value, ))st.write('Count = ', st.session_state.counter)
下面看看kwargs
的用法,它接收的是命名参数
import streamlit as stst.title('Callbacks with kwargs')
if 'counter' not in st.session_state:st.session_state.counter = 0def increment_counter(increment_value=0):st.session_state.counter += increment_valuedef decrement_counter(decrement_value=0):st.session_state.counter -= decrement_valuest.button('Increment', on_click=increment_counter,kwargs=dict(increment_value=5))st.button('Decrement', on_click=decrement_counter,kwargs=dict(decrement_value=1))st.write('Count = ', st.session_state.counter)
点击Increment
按钮,Count
就加5,点击Decrement
按钮,Count
就减1
会话状态的注意事项
关于会话状态,有两点需要注意,分别是
只要页面打开并连接到
streamlit
服务器,会话状态就会一直存在。一旦关闭选项卡,会话状态中存储的所有内容都会丢失会话状态不会持久化。如果
streamlit
服务器崩溃,那么存储在会话状态中的所有内容都会被删除
相关文章:

Streamlit基础教程
streamlit是什么 streamlit是一个开源的python库,它能够快速的帮助我们创建定制化的web应用,而且还非常便于和他人分享,特别是在机器学习和数据科学领域。整个过程不需要你了解任何前端的知识,包括html、css、javascript等&#x…...

内网穿透技术
文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 转载自内…...

计算机网络笔记:内部网关协议RIP
文章目录 1.协议RIP的工作原理2.距离向量算法3.坏消息传播得慢 1.协议RIP的工作原理 RIP的地位:RIP是内部网关协议IGP中最先得到广泛使用的协议,其中文译名为路由信息协议。 RIP概述: RIP是一种分布式的基于距离向量的路由选择协议&#x…...

基于Java学生信息管理系统设计实现(源码+lw+部署文档+讲解等)
博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…...

PHP简单入门
PHP是一种流行的服务器端编程语言,被广泛用于Web开发。许多著名的网站和应用程序都是使用PHP编写的,例如Facebook、Wikipedia和WordPress等。本篇文章将为您介绍如何入门PHP编程。 环境配置 在开始使用PHP之前,需要先配置开发环境。要在本…...

java 客户端操作HDFS
1、windows上部署hadoop包 部署包win版本 源码包zip包 lib整合:共121个jar包 $HADOOP_PREFIX/share/hadoop/{common,hdfs,mapreduce,yarn,tools}/{lib,.}*.jar 将windows版本hadoop/bin/hadoop.dll 放到c:/windows/system32下 2、windows环境变量配置 hadoop的…...

区块链中的共识机制以及共识算法
目录 什么是共识 什么是共识机制 共识机制类型 1、基于工作证明(Proof of Work PoW)...

【计算机网络自顶向下】DNS简答题总结
主要功能:将域名解析为主机能识别的IP地址 DNS实现的功能 主机到IP地址的转换主机别名的转换邮件服务器别名负载均衡 DNS实现冗余服务器:一个IP地址集合对应同一个规范主机名 域名系统 分布式数据库:一个由多层DNS服务器实现的分布式数据库应…...

【QQ界面展示-实现自动回复 Objective-C语言】
一、刚才咱们监听键盘弹出事件,是怎么监听的, 1.监听键盘弹出事件的步骤 1)首先,在控制器的viewDidLoad方法中,创建一个NotificationCenter对象啊 2)通过center,让当前控制器的这个方法,监听这个通知, 3)然后,我们在这个通知里面,获取到键盘的Y值, 4)对我们的…...

-bash: ssh: command not found
解决方法: 命令安装SSH: yum -y install openssh-clients [roothad2 ~]# yum -y install openssh-clients Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.qlu.edu.cn * extras: mirrors.ustc.edu.cn …...

ansible的部署和模块
一、 ansible 的概述 1、ansible简介 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。 它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端。 它使用SSH来和节点进行通信。Ansible基于 …...

nginx的优化
目录 一 隐藏版本号在网页上面有nginx的版本号会让别人攻击你的服务器 二 nginx的优化之日志分割 三 nginx的优化之页面压缩 四 连接超时 五 nginx的并发设置 七总结:nginx的优化 一 隐藏版本号在网页上面有nginx的版本号会让别人攻击你的服务器 如图所示 第一种方法是关…...

MySQL8超详细安装教程
MySQL的下载与安装 一、MySQL8下载 MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。 MySQL Enterprise Edition 企业版本,需付费,不能在线下载&#x…...

【FPGA入门】第五篇、按键消抖
目录 第一部分、按键抖动现象 第二部分、消抖思路及代码 1、简单的按键消抖思路 2、实际按键消抖思路 3、实际按键消抖模块代码 第三部分、总结 第一部分、按键抖动现象 只要学习过单片机的都会知道,按键在按下去和松开的那个瞬间都存在抖动,在单片…...

【MySql】MySql的事务基础篇
文章目录 CURD加控制什么是事物为什么会出现事务事务的版本支持事务的提交方式 CURD加控制 模拟一个买票系统的场景如下所示: MySQL注定会被多个客户端进行访问的,这个是肯定的,存储的都是数据,数据在上层可能有一个线程在用&…...

docker创建Ubuntu,Ubuntu创建桌面环境,本机使用VNC连接
题目:docker创建Ubuntu,Ubuntu创建桌面环境,本机使用VNC连接 文章目录 前言docker创建基于Ubuntu:20.04的容器使用ssh连接容器容器安装桌面环境本机电脑使用VNC连接测试用python来创建的ui能否显示坑参考 前言 为什么我想要用ubuntu的桌面环…...

理解redis的多线程和IO多路复用
参考资料 https://blog.csdn.net/TZ845195485/article/details/119745735 Redis单线程和多线程问题的背景 Redis里程碑版本迭代 Redis的单线程 主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包括获取(socket读&a…...

iOS 开发 | 自定义不规则 label
把我之前发布在简书的博客搬运过来。 目录 场景思路具体实现1. 自定义一个继承自UILabel的IrregularLabel2. 在初始化方法中进行相应初始化和设置3. 在layoutSubviews方法中进行路径的设置 最终效果箭头 label 场景 最近 App 改版,以下是截取的部分 UI 设计图&…...

client-go的Indexer三部曲之三:源码阅读
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《client-go的Indexer三部曲》全部链接 基本功能性能测试源码阅读 本篇概览 本文是《client-go的Indexer三部曲》系列的终篇,主要任务是阅读和…...

收件地址解析成 省+市+区+详细地址的形式
项目中的源代码在我的GitHub:https://github.com/weitw/address-analyzer 先看效果: 如上图,address数输入的地址,Address对象是解析后的地址。可以支持逆推上一级,且支持地址白话解析。 一、项目介绍 1、解析规则 …...

数据结构与算法基础(青岛大学-王卓)(5)
叮叮咚咚,新一期来袭,我还在吃桃子,吃桃子,吃桃子。。。串和python的字符串差不多,数组和广义表像是python的list 文章目录 串(string) - 字符串概念及术语串的类型定义存储结构(同线性表)串的模式匹配算法…...

微信小程序开发入门学习01-TDesign模板解读
目录 1 使用模板创建小程序2 app.json3 页面布局总结 原来我们使用微信开发者工具,比较困难的是前端框架的选择上,官方也没有提供一套框架供我们使用,最近开发者工具已经提供了一套前端框架,后续我们开发的效率会因为使用模板提高…...

使用 Jetpack Compose 创建自定义的对话框(Dialog)
在 Jetpack Compose 中,对话框(Dialog)是一种常见的用户界面组件,用于展示重要的信息、确认操作或者收集用户输入。本篇博客将带你深入了解 Jetpack Compose 中的对话框,并展示如何创建自定义的对话框,以满…...

c++ auto学习笔记
一、auto的意义 在C11中赋予auto的意义是:在声明变量时,根据初始化表达式自动推断该变量的类型。声明函数时作为函数返回值的占位符(用在函数返回类型后置的情况)。 如 auto i 6; //auto推断为intauto func()->int //函数返…...

【随机种子初始化】一个神经网络模型初始化的大坑
1 问题起因和经过 半年前写了一个模型,取得了不错的效果(简称项目文件1),于是整理了一番代码,保存为了一个新的项目(简称项目文件2)。半年后的今天,我重新训练这个整理过的模型&…...

翻过那座山——Gitlab流水线任务疑难之编译有子模块的项目指南
📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不是…...

手机照片删除后如何恢复
在如今移动互联网和智能手机时代,拍摄照片已经成为了人们常见的一种生活方式,尤其是通过手机拍摄照片已经成为了许多人记录生活点滴、分享经验和表达情感等的必备工具。但是,随着手机照片量的激增,意外删除手机中珍贵照片的事件也…...

SpringBoot 线上服务假死,CPU 内存正常,什么情况?
背景 开发小伙伴都知道线上服务挂掉,基本都是因为cpu或者内存不足,出现GC频繁OOM之类的情况。本篇文章区别以上的情况给小伙伴们带来不一样的服务挂掉。 还记得哔哩哔哩713事故中那场诡计多端的0吗? 图片 对就是这个0,和本次事…...

kotlin从入门到精通之内置类型
基本类型 声明变量 val(value的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java中的final变量。 var(variable的简写)用来声明一个可变的变量,这种变量在初始…...

实战指南:使用Spring Boot实现消息的发送和接收
当涉及到消息发送和接收的场景时,可以使用Spring Boot和消息中间件RabbitMQ来实现。下面是一个简单的示例代码,展示了如何在Spring Boot应用程序中创建消息发送者和接收者,并发送和接收一条消息。 首先,你需要进行以下准备工作 确…...