1# Test MicroPython extensions on CPython asyncio: 2# - sleep_ms 3# - wait_for_ms 4 5try: 6 import utime, uasyncio 7except ImportError: 8 print("SKIP") 9 raise SystemExit 10 11 12async def task(id, t): 13 print("task start", id) 14 await uasyncio.sleep_ms(t) 15 print("task end", id) 16 return id * 2 17 18 19async def main(): 20 # Simple sleep_ms 21 t0 = utime.ticks_ms() 22 await uasyncio.sleep_ms(1) 23 print(utime.ticks_diff(utime.ticks_ms(), t0) < 100) 24 25 # When task finished before the timeout 26 print(await uasyncio.wait_for_ms(task(1, 5), 50)) 27 28 # When timeout passes and task is cancelled 29 try: 30 print(await uasyncio.wait_for_ms(task(2, 50), 5)) 31 except uasyncio.TimeoutError: 32 print("timeout") 33 34 print("finish") 35 36 37uasyncio.run(main()) 38