asyncio --- 非同步 I/O


Hello World!

importasyncioasyncdefmain():print('Hello ...')awaitasyncio.sleep(1)print('... World!')asyncio.run(main())

asyncio 是讓使用者以async/await 語法來編寫並行 (concurrent) 程式碼的函式庫 (library)。

asyncio 作為多個 Python 非同步框架的基礎,在高效能網路與網頁伺服器、資料庫連線函式庫、分散式任務佇列等服務都可以看得到它。

asyncio 往往是個建構 IO 密集型與高階層結構化網路程式碼的完美選擇。

asyncio 提供了一系列高階 API:

此外,還有一些給函式庫與框架 (framework) 開發者低階 API:

可用性: not WASI.

此模組在 WebAssembly 平台上不起作用或無法使用。更多資訊請參閱WebAssembly 平台

asyncio REPL

你能在REPL 中對一個asyncio 的並行情境 (context) 進行實驗:

$ python -m asyncioasyncio REPL ...Use "await" directly instead of "asyncio.run()".Type "help", "copyright", "credits" or "license" for more information.>>>importasyncio>>>awaitasyncio.sleep(10,result='hello')'hello'

產生一個稽核事件cpython.run_stdin` 且沒有引數。

在 3.12.5 版的變更:(也包括 3.11.10、3.10.15、3.9.20 及 3.8.20)發出稽核事件。

在 3.13 版的變更:可能的話使用 PyREPL,在這種情況下PYTHONSTARTUP 也會被執行。發出稽核事件。

參閱

備註

asyncio 的原始碼可以在Lib/asyncio/ 中找到。