当前位置: 首页 > news >正文

网络推广目标计划合肥关键词优化平台

网络推广目标计划,合肥关键词优化平台,带有响应式的网站,成都房地产信息查询平台Streamlit从入门到精通 系列#xff1a; 翻译: Streamlit从入门到精通 基础控件 一翻译: Streamlit从入门到精通 显示图表Graphs 地图Map 主题Themes 二翻译: Streamlit从入门到精通 构建一个机器学习应用程序 三翻译: Streamlit从入门到精通 部署一个机器学习应用程序 四翻译…Streamlit从入门到精通 系列 翻译: Streamlit从入门到精通 基础控件 一翻译: Streamlit从入门到精通 显示图表Graphs 地图Map 主题Themes 二翻译: Streamlit从入门到精通 构建一个机器学习应用程序 三翻译: Streamlit从入门到精通 部署一个机器学习应用程序 四翻译: Streamlit从入门到精通 高级用法缓存Cache和Session 五 1. 两个缓存装饰器 st.cache_data 是缓存返回数据的计算的推荐方法从 CSV 加载 DataFrame、转换 NumPy 数组、查询 API 或任何其他返回可序列化数据对象的函数str、int、float、DataFrame、array、list 等。它会在每次函数调用时创建一个新的数据副本使其免受突变和竞争条件的影响。st.cache_data的行为是您想要的——所以如果您不确定请从st.cache_data开始看看它是否有效st.cache_resource 是缓存全局资源如 ML 模型或数据库连接的推荐方法这些资源是您不想多次加载的不可序列化对象。使用它您可以在应用程序的所有重新运行和会话之间共享这些资源而无需复制或复制。请注意对缓存返回值的任何突变都会直接改变缓存中的对象更多详细信息见下文。 2. 基本用法 st.cache_data 是所有返回数据的函数的首选命令无论是 DataFrames、NumPy 数组、str、int、float 还是其他可序列化类型。对于几乎所有用例来说这都是正确的命令 让我们看一个使用 st.cache_data 的例子。假设您的应用将优步拼车数据集一个 50 MB 的 CSV 文件从互联网加载到 DataFrame 中 import streamlit as st import time import pandas as pddef load_data(url):df pd.read_csv(url)return dfdf load_data(https://github.com/plotly/datasets/raw/master/uber-rides-data1.csv) st.dataframe(df)st.button(Rerun)运行 load_data 功能需要 2 到 30 秒具体取决于您的互联网连接。提示如果您的连接速度较慢请改用此 5 MB 数据集。如果不进行缓存则每次加载应用或进行用户交互时都会重新运行下载。点击我们添加的按钮自己试试吧不是一次很棒的体验… 现在让我们在load_data上添加 st.cache_data 装饰器 import streamlit as st import time import pandas as pdst.cache_data # Add the caching decorator def load_data(url):df pd.read_csv(url)return dfdf load_data(https://github.com/plotly/datasets/raw/master/uber-rides-data1.csv) st.dataframe(df)st.button(Rerun)再次运行应用。您会注意到下载速度慢只发生在第一次运行时。随后的每次重播都应该几乎是即时的 2.1 这是如何工作的 让我们一步一步地了解st.cache_data的行为 在第一次运行时Streamlit 识别出它从未使用指定的参数值CSV 文件的 URL调用过 load_data 函数因此它运行该函数并下载数据。现在我们的缓存机制变得活跃返回的 DataFrame 通过 pickle 序列化转换为字节并存储在缓存中与 url 参数的值一起。在下次运行时Streamlit 会检查缓存中是否有具有特定 url 的 load_data 条目。有一个因此它检索缓存的对象将其反序列化为 DataFrame然后返回它而不是重新运行函数并再次下载数据。 序列化和反序列化缓存对象的过程会创建原始 DataFrame 的副本。虽然这种复制行为似乎没有必要但这是我们在缓存数据对象时想要的因为它有效地防止了突变和并发问题。请阅读下面的“突变和并发问题”部分以更详细地了解这一点。 Warning警告 st.cache_data隐式使用 pickle 模块该模块已知不安全。缓存函数返回的任何内容都会被酸洗和存储然后在检索时取消酸洗。确保缓存的函数返回受信任的值因为可能会构造恶意 pickle 数据这些数据将在取消pickling 期间执行任意代码。切勿在不安全模式下加载可能来自不受信任的来源或可能已被篡改的数据。仅加载您信任的数据。 2.2 DataFrame 转换 在上面的示例中我们已经展示了如何缓存加载 DataFrame。缓存 DataFrame 转换如 df.filter 或 df.sort_values也很有用。特别是对于大型 DataFrame这些操作可能会很慢。 st.cache_data def transform(df):df df.filter(items[Date/Time]) # 示例 1筛选特定列# df df.apply(np.sum, axis0)return dfdf transform(df) st.dataframe(df)2.3 缓存 API 调用 这样做还可以避免速率限制。 st.cache_data def api_call():response requests.get(https://jsonplaceholder.typicode.com/posts/1)return response.json() api_response api_call() print(api call, api_response) st.write(api call, api_response)2.4 运行 ML 模型推理 运行复杂的机器学习模型可能会占用大量时间和内存。为避免一遍又一遍地重新运行相同的计算请使用缓存。 st.cache_data def run_model(inputs):return model(inputs)3. st.cache_resource st.cache_resource 是缓存“资源”的正确命令这些资源应该在所有用户、会话和重新运行中全局可用。与st.cache_data相比它的用例更有限尤其是在缓存数据库连接和 ML 模型方面。 作为st.cache_resource示例让我们看一个典型的机器学习应用。第一步我们需要加载一个 ML 模型。我们使用 Hugging Face 的 transformers 库来做到这一点 from transformers import pipeline model pipeline(sentiment-analysis) # Load the model如果我们将此代码直接放入 Streamlit 应用程序中则该应用程序将在每次重新运行或用户交互时加载模型。重复加载模型会带来两个问题 加载模型需要时间并减慢应用程序的速度。每个会话都从头开始加载模型这会占用大量内存。 相反加载一次模型并在所有用户和会话中使用相同的对象会更有意义。这正是st.cache_resource的用例让我们将其添加到我们的应用程序中并处理用户输入的一些文本 from transformers import pipelinest.cache_resource # Add the caching decorator def load_model():return pipeline(sentiment-analysis)model load_model()query st.text_input(Your query, valueI love Streamlit! ) if query:result model(query)[0] # Classify the query textst.write(result)如果运行此应用你将看到该应用仅调用一次 load_model - 就在应用启动时。后续运行将重用缓存中存储的相同模型从而节省时间和内存 3.1 Behavior行为 使用 st.cache_resource 与使用 st.cache_data 非常相似。但是在行为上有一些重要的区别 st.cache_resource 不会创建缓存返回值的副本而是将对象本身存储在缓存中。函数返回值上的所有突变都会直接影响缓存中的对象因此必须确保来自多个会话的突变不会导致问题。简而言之返回值必须是线程安全的。(对非线程安全的对象使用 st.cache_resource 可能会导致崩溃或数据损坏。在下面的 Mutation 和并发问题中了解更多信息。)不创建副本意味着缓存的返回对象只有一个全局实例这可以节省内存例如使用大型 ML 模型时。用计算机科学术语来说我们创建一个单例。函数的返回值不需要可序列化。此行为对于本质上不可序列化的类型非常有用例如数据库连接、文件句柄或线程。无法使用 st.cache_data 缓存这些对象。 3.2 Database connections数据库连接 st.cache_resource 对于连接数据库很有用。通常您要创建一个连接对象并希望在每个查询中全局重用该对象。每次运行时创建新的连接对象效率很低并且可能会导致连接错误。这正是 st.cache_resource 可以做的事情例如对于 Postgres 数据库 st.cache_resource def init_connection():host hh-pgsql-public.ebi.ac.ukdatabase pfmegrnargsuser readerpassword NWDMCE5xdipIjRrpreturn psycopg2.connect(hosthost, databasedatabase, useruser, passwordpassword)conn init_connection()当然您可以对任何其他数据库执行相同的操作。请参阅我们有关如何将 Streamlit 连接到数据库的指南以获取深入的示例。 3.3 决定使用哪个缓存装饰器 上面的部分展示了每个缓存装饰器的许多常见示例。但在某些边缘情况下决定使用哪个缓存装饰器并不那么简单。最终这一切都归结为“数据”和“资源”之间的区别 数据是可序列化的对象可以通过 pickle 转换为字节的对象您可以轻松地将其保存到磁盘。想象一下您通常存储在数据库或文件系统中的所有类型 - 基本类型如 str、int 和 float还有数组、DataFrame、图像或这些类型的组合列表、元组、字典等 。资源是不可序列化的对象您通常不会将其保存到磁盘或数据库中。它们通常是更复杂的非永久性对象例如数据库连接、ML 模型、文件句柄、线程等。 从上面列出的类型中很明显Python 中的大多数对象都是“数据”。这也是为什么 st.cache_data 是几乎所有用例的正确命令。st.cache_resource是一个更奇特的命令您应该只在特定情况下使用。 代码 https://github.com/zgpeace/pets-name-langchain/tree/develop 参考 https://docs.streamlit.io/library/advanced-features/caching#basic-usage
http://www.zqtcl.cn/news/57493/

相关文章:

  • 石景山网站建设的大公司大连2021建设网
  • wordpress 下拉式菜单一个网站多个域名的seo优化
  • 南京制作网站公司网站安康公司网站制作
  • 湖南营销型网站建设 搜搜磐石网络wordpress 外贸站
  • 网站建设如何吸引投资网络营销系统
  • 合肥网站建设团队免费搭建网站模板
  • 建设银行网上银行网站网线制作实验总结
  • 搬家网站怎么做wordpress 500 php版本
  • 可以做ppt的网站有哪些方面南宁小程序开发网站建设公司
  • 网站建设主要营销内客微网站和app的区别
  • 网站做法软件外包价格一般多少
  • 美容产品网站建设多少钱怎样做信息收费网站
  • 做网站哪里便宜厦门自己建网站
  • 餐饮网站建设优化建站宁波建设监理管理协会网站
  • 网站制作最域名过期了被别人拿去做违法
  • 网站开发和软件开发含义做赚钱问卷调查的网站
  • 大连哪家做网站比较好公总号开发就是网站开发吗
  • 雅客网站建设管理系统英文
  • 玩网页游戏的网站网站数据采集怎么做
  • 东莞网站建设dgjwz网站所有权
  • 广西建设职业技术学院网站企业网站建设的必要性及维护
  • 汉力建设网站免费查企业信息的平台
  • 如何建设购物网站做网站网站牟利200万判刑
  • 开发网站好还是app怎么增加网站流量
  • 阿里云企业建站教程求一个旅游网站的代码
  • 做网站找哪家好要钱吗浙江可以做会计题目的网站
  • 栾城区住房建设局官方网站向雅虎提交网站
  • 网站团购活动页面怎么做网站开发商城实例
  • 三门峡网站建设公司申请网站建设申请理由
  • 贴吧网站建设公司管理系统有哪些