Python学习笔记--协程asyncio

协程的主要功能是单线程并发运行

假设有3个耗时不一样的任务。看看协程的效果。

先来看没有使用协程情况:

 1 #!/usr/bin/python3
 2 # -*- coding:utf-8 -*-
 3 
 4 import time
 5 
 6 def taskfun(num):
 7     time.sleep(num)
 8     print('执行时间'+str(num)+'秒!')
 9 def no_async_main():
10     print(f"start at {time.strftime('%X')}")
11     taskfun(1)
12     taskfun(2)
13     taskfun(3)
14     print(f"finished at {time.strftime('%X')}")
15 
16 
17 if __name__ == '__main__':
18     no_async_main()
View Code

上面代码执行结果如下:

 

 再来看看使用协程的情况:

 1 import asyncio
 2 import time 
 3 
 4 async def taskfun(num):
 5     await asyncio.sleep(num)
 6     print('执行时间'+str(num)+'秒!')
 7 
 8 async def mainfun():
 9     print(f"start at {time.strftime('%X')}")
10     await asyncio.gather(taskfun(1),taskfun(2),taskfun(3))
11     print(f"finished at {time.strftime('%X')}")
12 
13 def main():
14     asyncio.run(mainfun())
15 
16 if __name__ == '__main__':
17     main()
View Code

上面代码执行结果如下:

 

posted @ 2020-02-27 17:25  flyinghappy  阅读(140)  评论(0)    收藏  举报