SocketServer原始碼學習補充

2021-09-08 20:12:56 字數 1232 閱讀 8987

在前兩個文章中整理了關於baseserver部分以及baserequesthandler,以及通過對tcp的處理的流程的整理,這次整理的是剩下的關於用於擴充套件的部分,這裡通過對執行緒擴充套件進行整理

threadingmixin 類實現了多執行緒的方式,它只有兩個方法,分別是process_request和 process_request_thread方法。

原始碼內容如下:

def

process_request_thread(self, request, client_address):

"""same as in baseserver but as a thread.

in addition, exception handling is done here.

"""try

: self.finish_request(request, client_address)

self.shutdown_request(request)

except

: self.handle_error(request, client_address)

self.shutdown_request(request)

process_request方法複寫了父類的此方法。以此為介面入口,對每乙個請求,呼叫thread開啟乙個新的執行緒。每乙個執行緒都繫結process_request_thread方法。

原始碼內容如下:

def

process_request(self, request, client_address):

"""start a new thread to process the request.

"""t = threading.thread(target =self.process_request_thread,

args =(request, client_address))

t.daemon =self.daemon_threads

t.start()

process_request_thread方法和baseserver裡的parse_request幾乎一樣。只不過是多執行緒的方式呼叫。

使用的時候,通過多繼承呼叫介面,如原始碼中的:

class threadingtcpserver(threadingmixin, tcpserver): pass

到此為止基本的原始碼是過了一遍,剩下乙個關於程序的擴充套件部分還沒有看

socketserver原始碼分析 學習中

那麼我們先看socketserver怎麼用呢,然後在分析,先看下面的 import socketserver 1 引入模組 class myserver socketserver.baserequesthandler 2 自己寫乙個類,類名自己隨便定義,然後繼承socketserver這個模組裡面的...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

Cartographer原始碼篇 原始碼分析 1

在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...