aiorate

Loop frequency regulator for asyncio with an API similar to rospy.Rate
.
This project is archived as it has been superseded by loop-rate-limiters.
Installation
pip install aiorate
Usage
The Rate
class provides a non-blocking loop frequency limiter:
- Set the loop frequency in Hz at construction:
rate = aiorate.Rate(200.0)
- Call
await rate.sleep()
at every loop cycle
Here is what it looks like in practice:
import asyncio
import aiorate
async def main():
rate = aiorate.Rate(400.0)
while True:
loop_time = asyncio.get_event_loop().time()
print(f"Hello from loop at {loop_time:.3f} s")
await rate.sleep()
if __name__ == "__main__":
asyncio.run(main())
Check out the examples folder for more advance use cases, such as multiple loops running simultaneously at different rates.