1. #coding:utf-8
  2. '''''
  3. python 对一个函数执行速度控制的演示,原理和 对网速控制比较类似,这里更简单
  4. '''
  5. import time
  6. def RateLimited(maxsec):
  7. '速度控制修饰函数
  8. minInterval = 1.0 / float(maxsec)
  9. def decorate(func):
  10. #使用数组 记录上一次的时间,利用闭包还是蛮方便的
  11. lastTimeCalled = [0.0]
  12. def rateLimitedFunction(*args,**kargs):
  13. elapsed = time.time() - lastTimeCalled[0]
  14. #计算剩余时间
  15. leftToWait = minInterval - elapsed
  16. if leftToWait>0:
  17. #时间未到先暂停一会
  18. time.sleep(leftToWait)
  19. ret = func(*args,**kargs)
  20. #更新时间
  21. lastTimeCalled[0] = time.time()
  22. return ret
  23. return rateLimitedFunction
  24. return decorate
  25. @RateLimited(0.5)  # 每秒最多调用几次
  26. def PrintNumber(num):
  27. print num
  28. if __name__ == "__main__":
  29. print "打印1,2,3... 每2秒打印一个"
  30. for i in range(1,100):
  31. PrintNumber(i)

参考:http://twistedmatrix.com/documents/current/core/examples/#auto3

http://stackoverflow.com/questions/667508/whats-a-good-rate-limiting-algorithm

转载于:https://blog.51cto.com/shendongming/626657

python 对一个函数执行速度控制的演示相关推荐

  1. Python -- 定义一个函数,判断输入的数是不是质数

    Python – 定义一个函数,判断输入的数是不是质数 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,否则称为合数. #定义一个函数,判断该数是不是质数 def sum(n): ...

  2. python 如何判断一个函数执行完成_Python核心编程的四大神兽迭代器、生成器 、闭包以及装饰器...

    本文将主要分为4大部分,分别介绍Python核心编程中的迭代器.生成器 .闭包以及装饰器. 生成器 生成器是生成一个值的特殊函数,它具有这样的特点:第一次执行该函数时,先从头按顺序执行,在碰到yiel ...

  3. python 如何判断一个函数执行完成_菜鸟来也!50行Python代码一键整理桌面

    我的老同学小马忙于找工作,整天被各种照片信息,和面试笔试资料搞的焦头烂额,很多文件来不及处理,全部都堆放在了一起,久而久之,就造成了桌面非常的混乱,如下图所示: 乱糟糟的桌面,让心情也会潜移默化的变得 ...

  4. python装饰器函数执行后日志_Python装饰器使用规范案例详解

    >>> def now(): ... print('2015-3-25') ... >>> f = now >>> f() 2015-3-25 函 ...

  5. python装饰器函数执行后日志_python 装饰器理解

    在理解装饰器之前,先应该对闭包有个概念:所谓闭包,就是将组成函数的语句和这些语句的执行环境打包在一起时得到的对象,它的主要作用是封存上下文.这一特性可以巧妙的被用于现有函数的包装,从而为现有函数添加功 ...

  6. python装饰器函数执行后日志_一篇文章搞懂Python装饰器所有用法

    如果你接触 Python 有一段时间了的话,想必你对 @ 符号一定不陌生了,没错 @ 符号就是装饰器的语法糖. 它放在一个函数开始定义的地方,它就像一顶帽子一样戴在这个函数的头上.和这个函数绑定在一起 ...

  7. python装饰器函数执行后日志_python 某一函数上面有多个装饰器

    python 某一函数上面有多个装饰器 首先十分不推荐这种做法, 会令程序难以维护. 其次, 多个装饰器是按照装饰器的顺序进行执行的. 如果你编写过装饰器, 你就应该知道, 其实装饰器就是把函数的名字 ...

  8. 用python写一个函数_Python基础-函数篇

    1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 函数与函数式编程 1.面向对象: 华山派----> ...

  9. python中一个函数只允许有一条return语句_一个函数应该只有一个return语句吗?

    我经常在一个方法的开头有几个语句来返回"简单"的情况.例如,这个: public void DoStuff(Foo foo) { if (foo != null) { ... } ...

最新文章

  1. VIM — vim-go
  2. mnn c++ windows 调用实例
  3. 网络编程学习笔记(获取所有网络接口)
  4. HDFS集中式缓存管理(Centralized Cache Management)
  5. kernel 3.10内核源码分析--内核栈及堆栈切换
  6. 论文盘点:基于图卷积GNN的多目标跟踪算法解析
  7. mysql base64
  8. 奇异递归模板模式(Curiously Recurring Template Pattern,CRTP)
  9. 后端技术:消息队列MQ/JMS/Kafka相关知识介绍
  10. 整合MyBatis---SpringBoot
  11. 云计算开发学习笔记:Python3迭代器与生成器
  12. 人机工程学座椅设计_人体工程学_座椅设计说明
  13. 小白能读懂的 《手把手教你学DSP(TMS320X281X)》第六章 F2812的存储器映像
  14. 网络舆情监测在教育行业的必要性
  15. 拆解 米家扫地机器人_1699元!小米米家扫地机器人拆解:真复杂
  16. F5安全专栏 | 什么是零信任架构(ZTA)?
  17. 3DMAX 7 角色建模1 人头建模
  18. WPF - 简单的UI框架
  19. 存储过程执行提示:ORA-01031: insufficient privileges
  20. 我是一只IT小小鸟读后感 Part 1

热门文章

  1. C# webservice 配置总结
  2. 5分钟学会使用DataHub接入实时数据到MaxCompute(原ODPS)
  3. 微信公众平台小程序(应用号)开始内测了
  4. GlusterFS集群文件系统
  5. 湖南卫视明年不办选秀 段林希或是最后一个冠军
  6. 从王者荣耀看设计模式(六.状态模式)
  7. Linux 基本命令(八)--touch 常用命令
  8. 【100Days of 100 line Code】2 day
  9. Struts2学习日记(二)简单的Struts2登陆实现(Action继承ActionSupport类)
  10. 《编程之美》第2刷勘误