首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【说站】python中异步非阻塞如何实现

【说站】python中异步非阻塞如何实现

作者头像
很酷的站长
发布2022-11-24 13:11:39
发布2022-11-24 13:11:39
9210
举报

python中异步非阻塞如何实现

说明

1、当一个异步过程调用发出后,调用者不会立刻得到结果。

实际处理这个调用的部件是在调用发出后,通过状态、通知来通知调用者,或通过回调函数处理这个调用。

2、非阻塞的意思是,不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

实例

代码语言:javascript
复制
from time import time, sleep
 
"""
    同步操作
"""
def app01():
    
    def fn1():
        sleep(3)
        print("fn1 ...")
 
    def fn2():
        sleep(2)
        print("fn2 ...")
 
    def fn3():
        sleep(5)
        print("fn3 ...")
 
    fn1()
    fn2()
    fn3()
 
"""
    asyncio
"""
def app02():
    import asyncio
 
    async def fn1():
        await asyncio.sleep(3)
        print("fn1 ...")
 
    async def fn2():
        await asyncio.sleep(2)
        print("fn2 ...")
 
    async def fn3():
        await asyncio.sleep(5)
        print("fn3 ...")
 
    loop = asyncio.get_event_loop()
 
    tasks = [
        fn1(),
        fn2(),
        fn3()
    ]
 
    loop.run_until_complete(asyncio.wait(tasks))
    loop.close()
 
if __name__ == '__main__':
    startTime = time()
 
    # app01()
    app02()
 
    endTime = time()
    print('花费了', str(endTime - startTime), '秒')
 
# 第一个 10s
# 第二个 5s

以上就是python中异步非阻塞的实现,希望对大家有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • python中异步非阻塞如何实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档