mirror of
https://github.com/markqvist/rnsh.git
synced 2025-04-17 22:23:07 -04:00

Also added some scaling for pumping event loops to improve CPU usage. Version bump for release
33 lines
817 B
Python
33 lines
817 B
Python
import asyncio
|
|
import time
|
|
|
|
|
|
def bitwise_or_if(value: int, condition: bool, orval: int):
|
|
if not condition:
|
|
return value
|
|
return value | orval
|
|
|
|
|
|
def check_and(value: int, andval: int) -> bool:
|
|
return (value & andval) > 0
|
|
|
|
class SleepRate:
|
|
def __init__(self, target_period: float):
|
|
self.target_period = target_period
|
|
self.last_wake = time.time()
|
|
|
|
def next_sleep_time(self) -> float:
|
|
old_last_wake = self.last_wake
|
|
self.last_wake = time.time()
|
|
next_wake = max(old_last_wake + 0.01, self.last_wake)
|
|
sleep_for = next_wake - self.last_wake
|
|
return sleep_for if sleep_for > 0 else 0
|
|
|
|
async def sleep_async(self):
|
|
await asyncio.sleep(self.next_sleep_time())
|
|
|
|
def sleep_block(self):
|
|
time.sleep(self.next_sleep_time())
|
|
|
|
|