This program introduces a simple "logic" method that computes a number. After each iteration it uses the "yield from" syntax to call asyncio.sleep.
import asyncio
@asyncio.coroutine
def logic(max):
# This method runs some logic in a loop.
# ... The max is specified as an argument.
count = 0
for i in range(1, max):
count += i
count = count / i
# Provide a chance to run other methods.
yield from asyncio.sleep(1)
# Finished.
print(
"Logic result", max, count)
# Get our event loop.
loop = asyncio.get_event_loop()
# Call logic method four times.
tasks = [
asyncio.ensure_future(logic(5)),
asyncio.ensure_future(logic(20)),
asyncio.ensure_future(logic(10)),
asyncio.ensure_future(logic(1))]
# Run until all logic methods have completed.
# ... The sleep call will allow all to run in parallel.
loop.run_until_complete(asyncio.gather(*tasks))
loop.close()
Logic result 1 0
Logic result 5 1.375
Logic result 10 1.1274057539682538
Logic result 20 1.0557390762436003