python 限制函数调用次数的实例讲解

yipeiwu_com6年前Python基础

如下代码,限制某个函数在某个时间段的调用次数,

灵感来源: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实现的登录验证系统完整案例【基于搭建的MVC框架】

Python实现的登录验证系统完整案例【基于搭建的MVC框架】

本文实例讲述了Python实现的登录验证系统。分享给大家供大家参考,具体如下: 小型登录注册验证系统 一、概述 ​ 使用Redis+MySQL数据库实现一个小型的登录注册验证...

python利用不到一百行代码实现一个小siri

python利用不到一百行代码实现一个小siri

前言 如果想要容易理解核心的特征计算的话建议先去看看我之前的听歌识曲的文章,传送门:/post/97305.htm 本文主要是实现了一个简单的命令词识别程序,算法核心一是提取音频特征,二...

Django csrf 验证问题的实现

关于 csrf 的基本了解 百度百科:CSRF(Cross-site request forgery)跨站请求伪造,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。通过伪装来自受...

Python不使用int()函数把字符串转换为数字的方法

不使用int()函数的情况下把字符串转换为数字,如把字符串"12345"转换为数字12345。 方法一:利用str函数 既然不能用int函数,那我们就反其道而行,用str函数找出每一位字...

Google开源的Python格式化工具YAPF的安装和使用教程

Google开源的Python格式化工具YAPF的安装和使用教程

目前用于Python的格式化程序(如autopep8和pep8ify)都用于删除代码中的lint错误。这有很明显的局限性。 YAPF采用了不同的方法,基于Daniel Jasper开发的...