web前端三大主流框架之Python異步框架如何工作?
針對這個標題,我引用php中文網的Tomorin作者的一篇文章
這篇文章我們從 socket 編程的例子來看看 Python 異步框架是如何工作的,需要了解下簡單的 socket 編程以及 Linux 提供的 I/O 復用機制。 Python 異步框架也是基于操作系統底層提供的 I/O 復用機制來實現的,比如 linux 下可以使用 select/poll/epoll 等。 我們先看個簡單的 python socket server 例子,Python 代碼使用 Python3,確??梢允褂?selectors 模塊。
一個實例
我們下邊用一個 golang 的 tcp client 測試下它:
使用 go 運行它可以看到輸出。
接下來我們使用 python3 提供的 selectros 來改造它,這個模塊封裝了操作系統底層提供的 I/O 復用機制,比如 linux 上使用了 epoll。通過 I/O 復用機制我們可以監聽多個文件描述符的可讀寫事件并且注冊回調函數,擁有更好的并發性能。 先看 python3 的 selectors 文檔給的例子
我們來運行下這個 使用了 seelctors I/O 復用機制的 tcp echo server 看下輸出結果。
到這里就差不多了,我們再繼續運行 go 寫的 tcp client 來測試它看結果。
在后邊教程中我們將使用 python 的 coroutine 而不是回調函數來改造這個例子,這樣一來我們就能使用 async/await 來運行它了