zoukankan      html  css  js  c++  java
  • Python3.8 异步 asyncio

    代码

    import asyncio
    import time
    
    
    async def first_fun(delay):
        print('开始执行 first_fun 函数。')
        await asyncio.sleep(delay)
        print('first_fun 函数执行结束。')
        return delay
    
    
    async def second_fun(delay):
        print('开始执行 second_fun 函数。')
        await asyncio.sleep(delay)
        print('second_fun 函数执行结束。')
        return delay
    
    
    async def main():
        print(f"started at {time.strftime('%X')}")
    
        first = asyncio.create_task(first_fun(5))
        print('=============')
        second = asyncio.create_task(second_fun(4))
        # await first
        # await second
        print('=============')
        print(f"finished at {time.strftime('%X')}")
    
    
    asyncio.run(main())
    

      执行结果

    started at 13:35:37
    =============
    =============
    finished at 13:35:37
    开始执行 first_fun 函数。
    开始执行 second_fun 函数。
    

      

    代码2

    import asyncio
    import time
    
    
    async def first_fun(delay):
        print('开始执行 first_fun 函数。')
        await asyncio.sleep(delay)
        print('first_fun 函数执行结束。')
        return delay
    
    
    async def second_fun(delay):
        print('开始执行 second_fun 函数。')
        await asyncio.sleep(delay)
        print('second_fun 函数执行结束。')
        return delay
    
    
    async def main():
        print(f"started at {time.strftime('%X')}")
    
        first = asyncio.create_task(first_fun(5))
        print('=============')
        second = asyncio.create_task(second_fun(4))
        await first
        await second
        print('=============')
        print(f"finished at {time.strftime('%X')}")
    
    
    asyncio.run(main())
    

      执行结果

    started at 13:37:20
    =============
    开始执行 first_fun 函数。
    开始执行 second_fun 函数。
    second_fun 函数执行结束。
    first_fun 函数执行结束。
    =============
    finished at 13:37:25
    

      

    结论

    asyncio.create_task():就相当于开启了一个线程。
    await :相当用线程的 join,等待协程的运行结束,再继续运行之后的代码。
    

      

    更多asyncio教程  https://blog.csdn.net/songjinxaing/article/details/103883210

  • 相关阅读:
    springboot启动流程(三)Environment简介
    JavaWeb【一、简介】
    JavaJDBC【七、JDBC升级版简介】
    JavaJDBC【六、连接池】
    JavaJDBC【五、事务】
    JavaJDBC【四、存储过程的使用】
    JavaJDBC【三、增删改查】
    JavaJDBC【二、Mysql包加载与使用】
    JavaJDBC【一、概述】
    Java注解【五、注解实战】
  • 原文地址:https://www.cnblogs.com/john-xiong/p/13559188.html
Copyright © 2011-2022 走看看