micropython-lib/uasyncio.core/test_fair_schedule.py

35 wiersze
611 B
Python

# Test that uasyncio scheduling is fair, i.e. gives all
# coroutines equal chance to run (this specifically checks
# round-robin scheduling).
import uasyncio.core as asyncio
COROS = 5
ITERS = 5
result = []
async def coro(n):
for i in range(ITERS):
result.append(n)
yield
async def done():
while True:
if len(result) == COROS * ITERS:
#print(result)
assert result == list(range(COROS)) * ITERS
return
yield
loop = asyncio.get_event_loop()
for n in range(COROS):
loop.create_task(coro(n))
loop.run_until_complete(done())