Python 3.5 及更高版本引入了關(guān)于異步操作的原生支持,,主要包括 async 和 await 兩個關(guān)鍵字,以及 asyncio 模塊,。 這種異步操作的主要思想是協(xié)程 (coroutine),。一個協(xié)程可以在某些點上暫停執(zhí)行,以便其他協(xié)程可以運行,。 這里有一個使用 asyncio 進行異步操作的基本示例: import asyncioasync def my_coroutine(): await asyncio.sleep(1) # 休眠 1 秒 print('Hello')# Python 3.7 及以上版本可以直接使用 asyncio.run()asyncio.run(my_coroutine()) 在這個示例中,,my_coroutine 是一個協(xié)程。它使用 await 關(guān)鍵字暫停自己的執(zhí)行,,等待 asyncio.sleep(1) 完成,。在這個時候,其他協(xié)程可以執(zhí)行,。當(dāng) asyncio.sleep(1) 完成后,,my_coroutine 繼續(xù)執(zhí)行,打印 'Hello',。 你也可以同時運行多個協(xié)程,。這里有個例子:
這個程序?qū)⑹紫却蛴?'Hello',然后等待一秒后打印 'World',。 你還可以使用 asyncio.gather 來并行運行多個協(xié)程: import asyncioasync def print_after(wait_time, msg): await asyncio.sleep(wait_time) print(msg)# Python 3.7 及以上版本可以直接使用 asyncio.run()asyncio.run(asyncio.gather(print_after(1, 'Hello'), print_after(2, 'World'))) 在這個示例中,,print_after(1, 'Hello') 和 print_after(2, 'World') 將并行運行。由于 'Hello' 的等待時間更短,,它將首先打印,,然后等待一秒后打印 'World'。 注意,,這只是 Python 中異步操作的基本示例,。實際上,asyncio 庫提供了許多高級特性,,例如事件循環(huán),、任務(wù)、Futures,、信號量,、隊列等,可以滿足更復(fù)雜的異步編程需求,。 |
|
來自: 網(wǎng)摘文苑 > 《例程》