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网络编程学习笔记(六):Web客户端访问
Jun 09 Python
python中利用Future对象回调别的函数示例代码
Sep 07 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
Python3.5 创建文件的简单实例
Apr 26 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
python retrying模块的使用方法详解
Sep 25 Python
Python生成词云的实现代码
Jan 14 Python
Python Scrapy图片爬取原理及代码实例
Jun 12 Python
python实现斗地主分牌洗牌
Jun 22 Python
Python ckeditor富文本编辑器代码实例解析
Jun 22 Python
python空元组在all中返回结果详解
Dec 15 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把数字转成人民币大写的函数分享
2014/06/30 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
JavaScript面向对象精要(上部)
2017/09/12 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
vue实现登录拦截
2020/06/29 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
利用Python开发微信支付的注意事项
2016/08/19 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
python之PyMongo使用总结
2017/05/26 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
Python如何批量生成和调用变量
2020/11/21 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
介绍Java的内部类
2012/10/27 面试题
保密工作承诺书
2014/08/29 职场文书
经典导游欢迎词
2015/01/26 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL
python基础之模块的导入
2021/10/24 Python
Vue全局事件总线你了解吗
2022/02/24 Vue.js