python中异步非阻塞如何实现

说明

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

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

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

实例

fromtimeimporttime,sleep

"""
同步操作
"""
defapp01():

deffn1():
sleep(3)
print("fn1...")

deffn2():
sleep(2)
print("fn2...")

deffn3():
sleep(5)
print("fn3...")

fn1()
fn2()
fn3()

"""
asyncio
"""
defapp02():
importasyncio

asyncdeffn1():
awaitasyncio.sleep(3)
print("fn1...")

asyncdeffn2():
awaitasyncio.sleep(2)
print("fn2...")

asyncdeffn3():
awaitasyncio.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学习指路:Python基础教程

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。