一组用于调节和控制Python代码执行时间的工具。

pythrottle的Python项目详细描述


pypi versionpython versionspipeline statuscoverage reportdocs

这个项目提供了一些方便的节流和控制工具 函数或Python代码迭代块的执行时间。在

主要特点

  • 简单且时间精确的循环迭代。在
  • 支持同步和异步编程。在
  • 速率限制连续函数调用。在
  • 环路速率测量。在

安装

$ pip install pythrottle

入门

节气门

限制代码块执行的基本用途是使用 Throttle.loop()(对于异步模式,Throttle.aloop())。 这将允许每隔1 / rate秒执行代码:

^{pr2}$

下一个示例代码从默认值记录一个15秒的视频文件 视频源以24帧/秒的准确帧速率使用 OpenCV。在

importcv2fromthrottleimportThrottlerate=24.0# Target frame ratecap=cv2.VideoCapture(0)out=cv2.VideoWriter('output.avi',cv2.VideoWriter_fourcc(*'XVID'),rate,(640,480))t=Throttle(interval=(1/rate))for_int.loop(duration=15.0):ret,frame=cap.read()# Frame captureout.write(frame)# Save frame to output file# Display the resulting framecv2.imshow('frame',frame)ifcv2.waitKey(1)&0xFF==ord('q'):break

如果你只是 sleep() 对于帧捕获之间的1 / 24秒,将有一个 捕获率和输出视频速率之间的差异,因为 帧捕获所需的时间。如果还添加图像处理 (运动检测,文本覆盖…),延迟可能导致输出 完全不同步。在

节气门装饰器

您还可以使用throttle.throttle()throttle.athrottle() decorators来限制对函数的调用次数。在下一个 例如,函数hello()经过修饰以限制 /throttledendpoint,使用 Flask服务器。只有2个请求 每5秒一次。在

fromflaskimportFlaskfromthrottleimportthrottleapp=Flask(__name__)@app.route("/throttled")@throttle(limit=2,interval=5,on_fail=("Limit reached :(",429))defhello():return"Hi, Throttle!"if__name__=='__main__':app.run()

可以嵌套修饰符来创建更复杂的限制规则。在

费率表

RateMeter类用于测量迭代的速率 代码只考虑最后几秒钟,所以 值保持更新。在

下一个代码块打印开始的循环的执行率 循环速度为10个IP(每秒迭代次数),最多可减少5个IP。在 显示并考虑到每次迭代的速率 最近2秒的迭代历史记录。在

importtimefromrate_meterimportRateMeterrate_meter=RateMeter(interval=2.0)foriinrange(100):rate_meter.update()measured_rate=rate_meter.rate()print(f"Rate: {rate_meter.rate()}")time.sleep(0.1+i*0.001)

许可证

根据MIT License的条款分发。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Spring Boot中启动应用程序上下文时发生java错误   JAVA网未知后异常Jsoup   java通过[i][2]元素对2D数组进行排序   java如何在Spring安全性中正确使用hasRole?   java getMaxInactiveInterval返回的值与应用程序中配置的值不同。属性   使用数组在java中创建表   java如何从outboundgateway向发送方抛出异常   javajavax。jms。JMSSecurityException:用户名[null]或密码无效   java为什么我们需要在tomcat日志中编写两次处理程序。财产?   java无法在Java6上使用SevenZFile解压7z文件   用Java实现排队   java检测用户是否绘制了整个屏幕   java包的最终变量可以通过反射进行更改吗?   java在JavaFX8中有没有控制菜单弹出位置的方法?   java对整数数组进行排序,而不影响由表示的特殊字符的索引$   IntelliJ IDEA与NetBeans对java性能的影响?   java如何解决登录/注册问题facebook E/BufferQueueProducer:[FacebookActivity[5278]#0]断开连接:未连接(请求=1)