1 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
這些幾乎是兩種不同的方式來(lái)獲得相同的最終結(jié)果。如果您查看 的實(shí)現(xiàn)ThreadingTCPServer
,那就是:
class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass
在另一個(gè)示例中,HTTPServer
它只是一個(gè)非常小的包裝器TCPServer
(添加一個(gè)覆蓋server_bind
以存儲(chǔ)服務(wù)器主機(jī)名并自動(dòng)設(shè)置allow_reuse_address
),然后您的代碼直接添加ThreadingMixIn
.
因此,最終,無(wú)論哪種方式,您都會(huì)經(jīng)歷相同的基本代碼。隨著時(shí)間的推移,python 庫(kù)中的類層次結(jié)構(gòu)發(fā)生了輕微的變化,因此不同的代碼示例最終以不同的組合來(lái)做事。
就個(gè)人而言,對(duì)于您的示例,我發(fā)現(xiàn)使用ThreadingTCPServer
更清潔的版本,只是因?yàn)樵谄渌胤教幚砹艘粋€(gè)額外的類,因此代碼略小。OTOH,另一個(gè)版本允許更多的靈活性,因?yàn)槟呀?jīng)定義了一個(gè)可以控制線程混合屬性的點(diǎn),HTTPServer
如果這對(duì)您來(lái)說(shuō)很重要,您還可以獲得額外的包裝位。
添加回答
舉報(bào)