Skip to main content

Loop frequency regulator for asyncio.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiorate-1.0.2.tar.gz (14.8 kB view hashes)

Uploaded Source

Built Distribution

aiorate-1.0.2-py3-none-any.whl (8.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page