Skip to content
This repository has been archived by the owner on Dec 7, 2022. It is now read-only.
/ aiorate Public archive

Loop frequency regulation for asyncio

License

Notifications You must be signed in to change notification settings

stephane-caron/aiorate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aiorate

Build Coverage Documentation PyPI version

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)  # Hz
    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.