python 限制函数调用次数的实例讲解


Posted in Python onApril 21, 2018

如下代码,限制某个函数在某个时间段的调用次数,

灵感来源:python装饰器-限制函数调用次数的方法(10s调用一次) 欢迎访问

原博客中指定的是缓存,我这里换成限制访问次数,异曲同工

#newtest.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import time
def stat_called_time(func):
 cache={}
 limit_times=[10]
 def _called_time(*args,**kwargs):
  key=func.__name__
  if key in cache.keys():
   [call_times,updatetime]=cache[key]
   if time.time()-updatetime <60:
    cache[key][0]+=1
   else:
    cache[key]=[1,time.time()]
  else:
   call_times=1
   cache[key]=[call_times,time.time()]
  print('调用次数: %s' % cache[key][0])
  print('限制次数: %s' % limit_times[0])
  if cache[key][0] <= limit_times[0]:
   res=func(*args,**kwargs)
   cache[key][1] = time.time()
   return res
  else:
   print("超过调用次数了")
   return None
 return _called_time
@stat_called_time
def foo():
 print("I'm foo")
if __name__=='__main__':
 for i in range(10):
  foo()
#test.py
from newtest import foo
import time
for i in range(30):
 foo()
print('*'*20)
foo()
foo()
print('*'*20)
for i in range(60):
 print(i)
 time.sleep(1)
for i in range(11):
 foo()

以上这篇python 限制函数调用次数的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
python对DICOM图像的读取方法详解
Jul 17 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
Python面向对象程序设计类的封装与继承用法示例
Apr 12 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
python实现银联支付和支付宝支付接入
May 07 Python
pyinstaller打包opencv和numpy程序运行错误解决
Aug 16 Python
django中瀑布流写法实例代码
Oct 14 Python
如何使用python进行pdf文件分割
Nov 11 Python
Pytorch的mean和std调查实例
Jan 02 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 #Python
对Python中的@classmethod用法详解
Apr 21 #Python
python3+dlib实现人脸识别和情绪分析
Apr 21 #Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 #Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 #Python
使用pandas读取csv文件的指定列方法
Apr 21 #Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 #Python
You might like
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python 简易计算器程序,代码就几行
2009/08/29 Python
Python中对列表排序实例
2015/01/04 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
自行车广告词大全
2014/03/21 职场文书
励志演讲稿800字
2014/08/21 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
茶花女读书笔记
2015/06/29 职场文书
庭外和解协议书
2016/03/23 职场文书