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基于smtplib实现异步发送邮件服务
May 28 Python
在Python中marshal对象序列化的相关知识
Jul 01 Python
Python读写unicode文件的方法
Jul 10 Python
Python enumerate索引迭代代码解析
Jan 19 Python
Python爬虫之pandas基本安装与使用方法示例
Aug 08 Python
对python中数组的del,remove,pop区别详解
Nov 07 Python
在python里创建一个任务(Task)实例
Apr 25 Python
Pycharm修改python路径过程图解
May 22 Python
简单了解python关键字global nonlocal区别
Sep 21 Python
Django Auth用户认证组件实现代码
Oct 13 Python
pytorch查看网络参数显存占用量等操作
May 12 Python
Python机器学习之PCA降维算法详解
May 19 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 安全检测代码片段(分享)
2013/07/05 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
php根据日期显示所在星座的方法
2015/07/13 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
2014/12/31 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
Python中isnumeric()方法的使用简介
2015/05/19 Python
python中使用序列的方法
2015/08/03 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
代办社保委托书范文
2014/10/06 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android