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中关于日期时间处理的问答集锦
Mar 08 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
python3库numpy数组属性的查看方法
Apr 17 Python
Python3爬虫全国地址信息
Jan 05 Python
pandas DataFrame行或列的删除方法的实现示例
Aug 02 Python
如何基于Python实现自动扫雷
Jan 06 Python
如何给Python代码进行加密
Jan 10 Python
Pytorch之finetune使用详解
Jan 18 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
python如何输出反斜杠
Jun 18 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php xml文件操作代码(一)
2009/03/20 PHP
PHP PDO函数库详解
2010/04/27 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
js获取form的方法
2015/05/06 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
google广告之另类js调用实现代码
2020/08/22 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
python调用java的Webservice示例
2014/03/10 Python
用Python实现换行符转换的脚本的教程
2015/04/16 Python
python实现用户管理系统
2018/01/10 Python
Python适配器模式代码实现解析
2019/08/02 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
如何基于python测量代码运行时间
2019/12/25 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
团委竞选演讲稿
2014/04/24 职场文书
应聘教师求职信
2014/07/19 职场文书
学生实习证明范文
2014/09/28 职场文书
2015年医院药剂科工作总结
2015/05/04 职场文书
大学生入党自传2015
2015/06/26 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js