Created
June 8, 2020 11:38
-
-
Save peterjpxie/b201298268727826d39db2710e8d2e5e to your computer and use it in GitHub Desktop.
asyncio_demo.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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