streamlit和grado的使用

1. streamlit

1.1 安装

Pip install streamlit
文档:
https://docs.streamlit.io/develop/api-reference/widgets/st.color_picker

1.2 常用方法

  • 标题:st.title(“日志分析工具”)
  • 选项卡:tab1, tab2 = st.tabs([“去重功能”, “检索功能”])
  • 选项卡标题:st.header(“去重功能”)
  • 文件上传:log_file = st.file_uploader(“上传日志文件”, type=[“txt”, “log”])
  • 数值滑块:threshold = st.slider(“相似度调整”, 0.0, 1.0, step=0.01, value=0.8)
  • 按钮:remove_button = st.button(“去重”)
  • 输入框:st.text_input(“输入要检索的日志”)
  • 输出框:st.text_area(“相似日志输出”, st.session_state[‘remove_output’], height=300)
  • 下载按钮:st.download_button(“下载去重后的日志”, st.session_state[‘unique_file_content’], file_name=“unique_logs.txt”)
  • 状态设置:st.session_state[‘remove_output’] = remove_output
    在streamlit中,下载按钮无法预定义,且用if的时候,必须带上状态设置,不是很方便。

1.3 使用demo

import streamlit as st

# 标题
st.title("日志分析工具")

# 创建选项卡
tab1, tab2 = st.tabs(["去重功能", "检索功能"])

with tab1:
    st.header("去重功能")
    log_file = st.file_uploader("上传日志文件", type=["txt", "log"])
    threshold = st.slider("相似度调整", 0.0, 1.0, step=0.01, value=0.8)
    remove_button = st.button("去重")

    if remove_button and log_file is not None:
        remove_output, unique_file_content, analogous_file_content = remove_and_print_analogous_logs(log_file, threshold)
        
        st.session_state['remove_output'] = remove_output
        st.session_state['unique_file_content'] = unique_file_content
        st.session_state['analogous_file_content'] = analogous_file_content

    if 'remove_output' in st.session_state:
        st.text_area("相似日志输出", st.session_state['remove_output'], height=300)
        st.download_button("下载去重后的日志", st.session_state['unique_file_content'], file_name="unique_logs.txt")
        st.download_button("下载相似日志", st.session_state['analogous_file_content'], file_name="analogous_logs.txt")

with tab2:
    st.header("检索功能")
    log_file_search = st.file_uploader("上传日志文件", type=["txt", "log"], key="log_file_search")
    search_log = st.text_input("输入要检索的日志")
    threshold_search = st.slider("相似度调整", 0.0, 1.0, step=0.01, value=0.8, key="threshold_search")
    search_button = st.button("检索", key="search_button")

    if search_button and log_file_search is not None:
        search_output = search_similar_logs(log_file_search, search_log, threshold_search)
        st.session_state['search_output'] = search_output

    if 'search_output' in st.session_state:
        st.text_area("检索相似日志输出", st.session_state['search_output'], height=300)

1.4 运行

streamlit run demo.py

1.5 问题

第一次运行的时候报错出现:
OSError: [Errno 28] inotify watch limit reached 是由于 Linux 系统的 inotify 监视器数量达到上限导致的。可以通过增加 inotify 监视器的数量来解决这个问题。

解决方法

  • 临时增加 inotify 监视器数量

在终端中执行以下命令来临时增加 inotify 监视器的数量:
sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl -p

  • 永久增加 inotify 监视器数量

编辑 /etc/sysctl.conf 文件:
sudo nano /etc/sysctl.conf
#在文件末尾添加以下一行:
fs.inotify.max_user_watches=524288
#保存并退出编辑器,然后运行以下命令使更改生效:
sudo sysctl -p

2. gradio

2.1 安装

pip install gradio

2.2 常用方法

  • 标题:gr.Markdown(“## 日志分析工具”)
  • 选项卡:gr.Tab(“去重功能”)
  • 文件:gr.File(label=“上传日志文件”)
  • 数值滑块:gr.Slider(0.0, 1.0, step=0.01, value=0.8, label=“相似度调整”)
  • 文本输入|结果展示:gr.Textbox(label=“相似日志输出”)
  • 按钮:gr.Button(“检索”)
  • 按钮点击:remove_button.click(fn=remove_and_print_analogous_logs, inputs=[log_file, threshold], outputs=[remove_output, unique_file_output, analogous_file_output])

2.3 使用demo

import gradio as gr

# 使用 Gradio 创建界面
with gr.Blocks() as demo:
    gr.Markdown("## 日志分析工具")
    
    with gr.Tab("去重功能"):
        log_file = gr.File(label="上传日志文件")
        threshold = gr.Slider(0.0, 1.0, step=0.01, value=0.8, label="相似度调整")
        remove_button = gr.Button("去重")
        remove_output = gr.Textbox(label="相似日志输出")
        unique_file_output = gr.File(label="下载去重后的日志")
        analogous_file_output = gr.File(label="下载相似日志")

        remove_button.click(fn=remove_and_print_analogous_logs, inputs=[log_file, threshold], outputs=[remove_output, unique_file_output, analogous_file_output])

    with gr.Tab("检索功能"):
        log_file_search = gr.File(label="上传日志文件")
        search_log = gr.Textbox(label="输入要检索的日志")
        threshold_search = gr.Slider(0.0, 1.0, step=0.01, value=0.8, label="相似度调整")
        search_button = gr.Button("检索")
        search_output = gr.Textbox(label="检索相似日志输出")

        search_button.click(fn=search_similar_logs, inputs=[log_file_search, search_log, threshold_search], outputs=search_output)

demo.launch(server_name="0.0.0.0", server_port=7005)

相关推荐

  1. streamlitgrado使用

    2024-06-12 19:10:03       5 阅读
  2. pytorch中zero_grad()函数含义使用

    2024-06-12 19:10:03       6 阅读
  3. Gradle安装配置及使用

    2024-06-12 19:10:03       14 阅读
  4. Gradle安装配置及使用

    2024-06-12 19:10:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 19:10:03       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 19:10:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 19:10:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 19:10:03       18 阅读

热门阅读

  1. 中证指数绿色金融

    2024-06-12 19:10:03       6 阅读
  2. 【Linux学习之路 | vim编译器】vim编译器的使用

    2024-06-12 19:10:03       6 阅读
  3. 互动技巧( Interaction Skills 业务分析能力)

    2024-06-12 19:10:03       5 阅读
  4. Excel分组做散点图

    2024-06-12 19:10:03       7 阅读
  5. 最大N个数与最小N个数之和

    2024-06-12 19:10:03       5 阅读
  6. 【MeshLib & VTK】MeshLib PK VTK

    2024-06-12 19:10:03       7 阅读
  7. userservice

    2024-06-12 19:10:03       5 阅读
  8. NLP--逻辑回归

    2024-06-12 19:10:03       4 阅读
  9. 【Spring Cloud】配置中心详细介绍及使用

    2024-06-12 19:10:03       6 阅读