python实现API调用缓存
python实现API调用缓存
- 1.代码
- 2.输出
- 3.保存的json数据
想把python某些函数的参数及返回值记录下来,如果之前已计算过,则直接返回缓存中的数据
1.代码
import jsondef get_variable_name(var):'''变量转变量名'''local_vars=globals()return [name for name, value in local_vars.items() if value is var][0]def quick_exec(func,params):'''通过参数生成UUID,如果缓存中存在则直接获取,否则执行实际的函数,之后保存结果'''cache_path="cache_data.json"records={}uuid="_".join([str(x) for x in params])try:with open(cache_path,"r") as f:records=json.load(f)except:passif uuid in records:ret=records[uuid]["result"]else:ret=func(params)records[uuid]={"result":ret,"params":{}}for var in params:records[uuid]["params"][get_variable_name(var)]=varwith open(cache_path,"w") as f:json.dump(records,f,indent=4)return retdef sdk_api(params):'''实际的调用'''print("sdk_api call in:",params)return sum(params)def l0():globals()['a']=1globals()['b']=2globals()['c']=3globals()['d']=4globals()['e']=5params=(globals()['a'],globals()['b'],globals()['c'],globals()['d'],globals()['e'])ret=quick_exec(lambda x:sdk_api(x),params)print(ret)ret=quick_exec(lambda x:sdk_api(x),params)print(ret)globals()['b']=3params=(a,b,c,d,e)ret=quick_exec(lambda x:sdk_api(x),params)print(ret)ret=quick_exec(lambda x:sdk_api(x),params)print(ret)def l1():l0()def main():l1()
main()
2.输出
# 第一次运行
sdk_api call in: (1, 2, 3, 4, 5)
15
15
sdk_api call in: (1, 3, 3, 4, 5)
16
16
# 第二次运行
15
15
16
16
3.保存的json数据
{"1_2_3_4_5": {"result": 15,"params": {"a": 1,"b": 2,"c": 3,"d": 4,"e": 5}},"1_3_3_4_5": {"result": 16,"params": {"a": 1,"b": 3,"d": 4,"e": 5}}
}
相关文章:
python实现API调用缓存
python实现API调用缓存 1.代码2.输出3.保存的json数据 想把python某些函数的参数及返回值记录下来,如果之前已计算过,则直接返回缓存中的数据 1.代码 import jsondef get_variable_name(var):变量转变量名local_varsglobals()return [name for name, value in local_vars.ite…...
传输距离3000M|低延迟|48K采样音频传输模块-SA356大功率发射模块
无线音频应用中,远距离音频传输在许多领域具有广泛的应用需求,例如大型会议系统、公共广播、户外活动和音乐演出等。为了满足这些需求,音频传输模块需要具备一些关键特性,包括长距离传输能力、高音质、低延迟、稳定性以及抗干扰能…...
前端css性能优化
前端css性能优化 1. 减少样式表数量和压缩文件大小: 通过合并多个样式表、删除未使用的样式、压缩样式表等方式来减少样式表数量和大小,从而减少网络请求和提高加载速度。 通常来说,样式文件会被浏览器缓存,进入到其他页面样式文件…...
如何在Windows上使用Docker搭建PHP开发环境
前言 在本地搭建开发环境我好像没几年就要折腾一次,因为本地开发电脑使用的是windows,早些年的时候,用过很多类似WAMP之类的东西,但最终都有或多或少不满意的地方,前两年的时候,还折腾过WSL,但…...
java 单例模式
Java中实现单例模式的常见方式有两种:懒汉式和饿汉式。以下是这两种方式的简单示例: 饿汉式 饿汉式单例模式在类加载时就完成了实例的初始化,以空间换时间,确保了实例的唯一性。 public class Singleton {// 在自己内部定义自己…...
爬虫 属性 方法
在Python中,爬虫常用于从网页上抓取数据。BeautifulSoup是一个流行的库,用于从HTML或XML文件中提取数据。它创建了一个解析树,方便你从文档中查找、修改或导航数据。 安装BeautifulSoup 首先,你需要安装BeautifulSoup和lxml&…...
HEX文件
什么是hex文件 以*.hex为后缀的文件我们称之为HEX文件。hex是intel规定的标准,hex的全称是Intel HEX,此类文件通常用于传输将被存于ROM或EEPROM中的程序和数据。是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。HEX的英语原始意思是16进制…...
人机融合的智能操作系统
操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。它的职责常包括对硬件的直接监管、对各种计算资源(如内存、处理器时间等)的管理、以及提供诸如…...
数据结构之二叉树概念
数据结构之二叉树 二叉树简介分类普通二叉树平衡二叉树满二叉树二叉搜索树(二叉排序树、二叉查找树),平衡二叉树红黑树 B树类型B树(B-树、B_树)B树B*树 二叉树 简介 二叉树(Binary Tree) :是一种非常重要…...
Linux源码阅读笔记08-进程调度API系统调用案例分析
kthread_create_on_node kthread_create_on_node函数功能:指定存储节点创建新内核线程。源码如下: 操作实战 #include <linux/module.h> #include <linux/pid.h> #include <linux/sched.h> #include <linux/kthread.h> #inclu…...
短视频抓取:成都柏煜文化传媒有限公司
短视频抓取:技术挑战、法律边界与未来趋势 随着移动互联网的迅猛发展,短视频平台如雨后春笋般涌现,成为现代人生活娱乐的重要组成部分。然而,在海量短视频内容中,如何高效、准确地抓取目标视频,成为了一个…...
proto的前后端使用
首先定义一个input.proto文件 内容如下 syntax "proto3";message InputData {int32 UserId 1; // 将 number 改为 int32 或 int64string UserInput 2;string DrunkState 3; }message ResponseData {string AIResponse 1;string prompt 2;string emoti…...
华为解决固态硬盘致命弱点:延长30~50%的SSD寿命
如今的SSD容量越做越大,企业级SSD容量已达30TB、60TB的、甚至120TB。但SSD寿命一直是“致命伤”,越大容量的盘,出现故障后,丢失的数据就越多。 近日, 华为数据存储发文,揭开华为全闪分布式存储让SSD大盘更“…...
登录验证码高扩展性设计方案
登录验证码高扩展性建设方案 本文分享了一种登录验证码高扩展性的建设方案,通过工厂模式策略模式,增强了验证码服务中验证码生成器、验证码存储器、验证码图片生成器的扩展性,实现了服务组件的多样化,降低了维护成本 登录验证码高…...
Spring MVC数据绑定和响应——数据回写(一)普通字符串的回写
接下来通过HttpServletResponse输出数据的案例,演示普通字符串的回写,案例具体实现步骤如下。 1、创建一个数据回写类DataController,在DataController类中定义showDataByResponse()方法,用于测试在Spring MVC中普通字符串的回写…...
怎样才能更好地保护个人账号的安全
怎样才能更好地保护个人账号的安全 保护个人账号安全是网络安全的重要组成部分,以下是一些有效的措施来增强账号的安全性: 1. 使用强密码 复杂性:创建包含大小写字母、数字和特殊字符的密码。长度:密码至少应有12个字符长。唯一…...
react native优质开源项目
React Native 是一个非常流行的用于构建跨平台移动应用程序的框架,开源社区贡献了许多优质的项目和库。以下是一些备受认可的 React Native 开源项目,适合用来学习和参考: ### 1. **React Native Elements** [React Native Elements](https:…...
速盾:海外cdn有哪些优缺点呢?
海外 CDN(内容分发网络)是一种通过在全球多个节点上分布内容来加速网站访问速度的服务。它通过将网站的静态内容缓存到全球各地的服务器上,使用户可以从最近的服务器获取内容,从而提高网站的响应速度和用户体验。然而,…...
Unity Shader 软粒子
Unity Shader 软粒子 前言项目Shader连连看项目渲染管线设置 鸣谢 前言 当场景有点单调的时候,就需要一些粒子点缀,此时软粒子就可以发挥作用了。 使用软粒子与未使用软粒子对比图 项目 Shader连连看 这里插播一点,可以用Vertex Color与…...
nextTick的应用和原理理解
一.代码的理解 <template><div id"app"><div></div><button click"fn" ref"box"> {{ name }}</button></div> </template><script> export default {data: function () {return {n…...
c | 穿 |pld | 的 |女王 |2222
我通过百度网盘分享的文件:穿达的王2(20... 链接:https://pan.baidu.com/s/1yiYXVmvY-KhDjwWzL2t81w?pwdj775 提取码:j775...
青岛X射线探伤机服务好的供应商
在工业检测领域,X射线探伤机并非一次性采购的设备——它需要持续的技术支持、稳定的运行保障,以及服务商在关键时刻的响应能力。选择一家服务好的供应商,往往比选择一台设备本身更需要慎重。在青岛,有一家名为华誉机电设备有限公司…...
如何评估拓客数据的有效性?避开无效内耗,精准提效
当下企业拓客越来越注重精细化,不少团队投入大量精力收集数据,却陷入“数据越多,效果越差”的困境——空号、无效线索、非目标客群占据大半,不仅浪费人力成本,更拖慢增长节奏。其实,拓客的核心不在于“量”…...
Aviator表达式引擎:从编译优化到规则引擎实战
1. Aviator表达式引擎初探 第一次接触Aviator是在一个电商风控项目中,当时系统需要处理大量实时交易规则判断。传统的if-else代码已经膨胀到难以维护的程度,每次业务规则变更都需要重新发布。这时候技术负责人推荐了Aviator,一个基于Java的高…...
如何在IDEA中打造你的私人阅读空间:3个实用技巧提升编程效率与阅读体验
如何在IDEA中打造你的私人阅读空间:3个实用技巧提升编程效率与阅读体验 【免费下载链接】thief-book-idea IDEA插件版上班摸鱼看书神器 项目地址: https://gitcode.com/gh_mirrors/th/thief-book-idea 在快节奏的编程工作中,如何有效利用碎片化时…...
Go语言内存管理与性能优化
Go语言内存管理与性能优化 一、内存管理基础 Go语言采用自动内存管理机制,开发者无需手动管理内存分配和释放。理解Go的内存管理机制对于编写高性能代码至关重要。 Go内存分配器 Go使用tcmalloc(Thread-Caching Malloc)作为底层内存分配器&am…...
实测5款AI教材编写工具,低查重效果惊人,快速生成专业教材
许多教材编写者常常感到遗憾,他们费尽心思完善的正文内容,因为缺少配套资源而导致教学效果打折。设计课后练习题时,面对题型的多样化却缺乏创新的思路;制作可视化教学课件时,手头的技术能力又无法满足;深入…...
MISC实战:从受损pcap到关键数据提取的全链路取证分析
1. 受损pcap文件修复实战指南 遇到打不开的流量包文件就像拿到一张破损的地图,明明知道宝藏就在里面却无从下手。我处理过上百个损坏的pcap文件,最常见的报错是"Not a pcap/pcapng file"或"File has invalid header"。这时候别急着…...
谷歌关键词搜索怎么做上去? 提升首页点击率的4个标题优化细节
某家出口企业耗费6个月将“工业水泵制造”推至搜索结果第三位。搜索控制台报表显示,该网页月度曝光量达45,000次,访客仅有540人。点击率停留在1.2%。排在第五位的同行业公司,凭借52个字符的标题,拿走月均3,200个访客。一份针对海外…...
别再死记硬背了!Vivado伪双口RAM的wea、ena信号到底怎么用?一个实例讲透
Vivado伪双口RAM控制信号实战指南:从原理到避坑 第一次接触Vivado的伪双口RAM时,那些密密麻麻的控制信号确实让人头疼。尤其是wea和ena这两个看似简单却暗藏玄机的信号,稍不注意就会导致数据读取异常或者意外覆盖。记得去年我在一个图像处理项…...
