Skip to content

Instantly share code, notes, and snippets.

@peterjpxie
Created June 8, 2020 11:38
Show Gist options
  • Select an option

  • Save peterjpxie/b201298268727826d39db2710e8d2e5e to your computer and use it in GitHub Desktop.

Select an option

Save peterjpxie/b201298268727826d39db2710e8d2e5e to your computer and use it in GitHub Desktop.
asyncio_demo.py
import asyncio
import time
async def say_after(delay, what):
print(time.time(),'Start say_after(%s, %s)' % (delay,what))
await asyncio.sleep(delay)
print(time.time(),what)
return
async def main():
start_time = time.time()
print(start_time, 'Before creating tasks.')
task1 = asyncio.create_task(say_after(1, 'hello'))
task2 = asyncio.create_task(say_after(2, 'world'))
print(time.time(),"Before delay - after creating tasks")
await asyncio.sleep(0.5)
# time.sleep(0.5) # or time.sleep(3)
# loop computing to add delay (about 1s)
# for i in range(10000000):
# dummy = i*i
print(time.time(),"After delay - before await tasks")
await task1
await task2
end_time = time.time()
print('Total time elapsed: %.2f seconds' % (end_time - start_time))
asyncio.run(main())
''' no delay
1591603316.9226086 Before creating tasks.
1591603316.9226086 Before delay - after creating tasks
1591603316.9226086 After delay - before await tasks
1591603316.9226086 Start say_after(1, hello)
1591603316.9226086 Start say_after(2, world)
1591603317.935335 hello
1591603318.9240046 world
Total time elapsed: 2.00 seconds
'''
'''output - asyncio.sleep(0.5)
1591519998.4048095 Before creating tasks.
1591519998.4048095 Before delay - after creating tasks
1591519998.4068024 Start say_after(1, hello)
1591519998.4100022 Start say_after(2, world)
1591519998.9186609 After delay - before await tasks
1591519999.4046383 hello
1591520000.4130397 world
Total time elapsed: 2.01 seconds
'''
''' output - time.sleep(0.5): it delays tasks to start
1591520274.2405572 Before creating tasks.
1591520274.2405572 Before delay - after creating tasks
1591520274.7463455 After delay - before await tasks
1591520274.7466683 Start say_after(1, hello)
1591520274.7486606 Start say_after(2, world)
1591520275.7560854 hello
1591520276.7609521 world
Total time elapsed: 2.52 seconds
'''
''' output - loop computing delay
1591580139.4979074 Before creating tasks.
1591580139.5017805 Before delay - after creating tasks
1591580140.5599041 After delay - before await tasks
1591580140.5755594 Start say_after(1, hello)
1591580140.5770938 Start say_after(2, world)
1591580141.5945394 hello
1591580142.5842996 world
Total time elapsed: 3.09 seconds
'''
''' output - asyncio.sleep(0.1) + time.sleep(3)
Note: say_after will take more than 3 seconds.
1591580816.6546037 Before creating tasks.
1591580816.6546037 Before delay - after creating tasks
1591580816.6566882 Start say_after(1, hello)
1591580816.6596053 Start say_after(2, world)
1591580819.794359 After delay - before await tasks
1591580819.7956643 hello
1591580819.7993684 world
Total time elapsed: 3.15 seconds
'''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment