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类继承用法实例分析
Oct 10 Python
python通过线程实现定时器timer的方法
Mar 16 Python
python实现简单ftp客户端的方法
Jun 28 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
Sublime开发python程序的示例代码
Jan 24 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
Python的pygame安装教程详解
Feb 10 Python
Django分组聚合查询实例分享
Apr 29 Python
python中numpy数组与list相互转换实例方法
Jan 29 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
PHP DataGrid 实现代码
2009/08/12 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
简单的js计算器实现
2016/10/26 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
vue.js简单配置axios的方法详解
2017/12/13 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
wxPython窗体拆分布局基础组件
2019/11/19 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
暑假实习求职信范文
2013/09/22 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
大学生学业生涯规划
2014/01/05 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
继承公证书格式
2015/01/26 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
入团申请书格式
2019/06/20 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
Redis实现订单过期删除的方法步骤
2022/06/05 Redis
SpringBoot Http远程调用的方法
2022/08/14 Java/Android