当前位置:   article > 正文

python3 async 实践

python3 async

python3 async 实践

async/await 是python3的新特性,可以进行协程运行。个人将他理解成多线程。实现代码如下

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import time
import asyncio

async def SleepTime(ts):
    if ts == 3:
        await asyncio.sleep(10) #当ts等于3的时候,让挂起的时间为10s,其他的按正常挂起,验证协程时间。
    else:
        await asyncio.sleep(ts)

async def main(loop):
    tasks = []
    for i in range(6):
        print("time begin %s"%i)
        tasks.append(loop.create_task(SleepTime(i))) #相当于开启了一个线程
        print("sleep time end %s"%i)
        print("*********************")
    await asyncio.wait(tasks) #等待所有的任务完成。

if __name__ == "__main__":
    # main()
    print("begin test")
    tb = time.time()
    print(tb) #记录当前时间
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main(loop))
    loop.close()
    print(time.time()-tb) #记录结束时间
    print("end")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

运行结果如下,没有用到协程的结果,会依次执行,总耗时会大于10秒。

begin test
1602423299.3981705
time begin 0
sleep time end 0
*********************
time begin 1
sleep time end 1
*********************
time begin 2
sleep time end 2
*********************
time begin 3
sleep time end 3
*********************
time begin 4
sleep time end 4
*********************
time begin 5
sleep time end 5
*********************
10.005681276321411
end
[Finished in 10.2s]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/102498
推荐阅读
相关标签
  

闽ICP备14008679号