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 相关文章推荐
浅谈Python中数据解析
May 05 Python
详解Python函数可变参数定义及其参数传递方式
Aug 02 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
django站点管理详解
Dec 12 Python
django框架之cookie/session的使用示例(小结)
Oct 15 Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 Python
python join方法使用详解
Jul 30 Python
Python tkinter实现图片标注功能(完整代码)
Dec 08 Python
python时间日期操作方法实例小结
Feb 06 Python
python 中不同包 类 方法 之间的调用详解
Mar 09 Python
Python super()函数使用及多重继承
May 06 Python
深入解析NumPy中的Broadcasting广播机制
May 30 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实现递归循环每一个目录
2010/08/08 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
jQuery中clone()方法用法实例
2015/01/16 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
2015/06/18 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
详解Python中dict与set的使用
2015/08/10 Python
python编程开发之类型转换convert实例分析
2015/11/13 Python
python清理子进程机制剖析
2017/11/23 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
杭州联环马网络笔试题面试题
2013/08/04 面试题
2015小学教师年度考核工作总结
2015/05/12 职场文书
安全生产会议制度
2015/08/06 职场文书
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL
Redis全局ID生成器的实现
2022/06/05 Redis