@ -74,7 +74,7 @@ def schedule(
if reschedule :
_queue . discard ( task )
if deadline is None :
deadline = utime . ticks_ u s( )
deadline = utime . ticks_ m s( )
if finalizer is not None :
_finalizers [ id ( task ) ] = finalizer
_queue . push ( deadline , task , value )
@ -123,9 +123,9 @@ def run() -> None:
while _queue or _paused :
# compute the maximum amount of time we can wait for a message
if _queue :
delay = utime . ticks_diff ( _queue . peektime ( ) , utime . ticks_ u s( ) )
delay = utime . ticks_diff ( _queue . peektime ( ) , utime . ticks_ m s( ) )
else :
delay = 1000 000 # wait for 1 sec maximum if queue is empty
delay = 1000 # wait for 1 sec maximum if queue is empty
if __debug__ :
# process synthetic events
@ -227,22 +227,21 @@ SLEEP_FOREVER = Syscall()
class sleep ( Syscall ) :
"""
Pause current task and resume it after given delay . Although the delay is
given in microseconds , sub - millisecond precision is not guaranteed . Result
value is the calculated deadline .
""" Pause current task and resume it after given delay.
Result value is the calculated deadline .
Example :
>> > planned = await loop . sleep ( 1000 * 1000 ) # sleep for 1 m s
>> > print ( ' missed by %d u s' , utime . ticks_diff ( utime . ticks_ u s( ) , planned ) )
>> > planned = await loop . sleep ( 1000 ) # sleep for 1 s
>> > print ( ' missed by %d m s' , utime . ticks_diff ( utime . ticks_ m s( ) , planned ) )
"""
def __init__ ( self , delay_ u s: int ) - > None :
self . delay_ us = delay_u s
def __init__ ( self , delay_ m s: int ) - > None :
self . delay_ ms = delay_m s
def handle ( self , task : Task ) - > None :
deadline = utime . ticks_add ( utime . ticks_ us( ) , self . delay_u s)
deadline = utime . ticks_add ( utime . ticks_ ms( ) , self . delay_m s)
schedule ( task , deadline , deadline )