天天看點

《Python核心程式設計(第3版)》——2.7 相關子產品

本節書摘來自異步社群《python核心程式設計(第3版)》一書中的第2章,第2.7節,作者[美] wesley chun(衛斯理 春),孫波翔 李斌 李晗 譯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

表2-4列出了其他一些與網絡和套接字程式設計有關的python子產品。當開發低級套接字程式時,經常配合使用select子產品和socket子產品。select子產品提供了select()函數,該函數管理套接字對象集合。它所做的最有用的一個事情就是接收一套套接字,并監聽它們活動的連接配接。select()函數将會阻塞,直到至少有一個套接字已經為通信做好準備,而當其發生時,它将提供一組準備好讀資訊的集合(它還可以确定哪些套接字準備好寫入,雖然它不像前一種操作那麼常見)。

《Python核心程式設計(第3版)》——2.7 相關子產品

在建立伺服器方面,async*和socketserver子產品都提供更進階的功能。它們以socket和/或select子產品為基礎編寫,能夠使用戶端/伺服器系統開發更加迅速,因為它們已經自動處理了所有的底層代碼。你需要做的所有工作就是以自己的方式建立或繼承适當的基類。正如前面所提到的,socketserver甚至提供了将線程或新程序內建到伺服器的功能,它提供了一個更像并行處理的用戶端請求的流程。

現代網絡架構遵循衆多異步模型(greenlet、generator等)之一來提供高性能異步伺服器。這些架構的其中一個目标就是推動異步程式設計的複雜性,以允許使用者以一種更熟悉的同步方式進行編碼。

本章介紹的主題主要是在python中利用套接字進行網絡程式設計,以及如何使用低層協定套件(如tcp/ip和udp/ip)建立自定義應用程式。如果你想開發進階web和網絡應用程式,我們強烈鼓勵你閱讀第3章,或者跳到本書第2部分。