python中非同步非阻塞如何實現

disable發表於2021-09-11

python中非同步非阻塞如何實現

說明

1、當一個非同步過程呼叫發出後,呼叫者不會立刻得到結果。

實際處理這個呼叫的部件是在呼叫發出後,透過狀態、通知來通知呼叫者,或透過回撥函式處理這個呼叫。

2、非阻塞的意思是,不能立刻得到結果之前,該函式不會阻塞當前執行緒,而會立刻返回。

例項

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中非同步非阻塞的實現,希望對大家有所幫助。更多Python學習指路:

本文教程操作環境:windows7系統、Python 3.9.1,DELL G3電腦。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/200/viewspace-2829518/,如需轉載,請註明出處,否則將追究法律責任。

相關文章