kopia lustrzana https://github.com/micropython/micropython-lib
uasyncio.core: Add test for fair scheduling.
rodzic
aba6935892
commit
48ead94116
|
@ -0,0 +1,34 @@
|
|||
# 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())
|
Ładowanie…
Reference in New Issue