溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python多線程具體應(yīng)用的方法

發(fā)布時(shí)間:2021-08-25 15:30:23 來(lái)源:億速云 閱讀:129 作者:chen 欄目:編程語(yǔ)言

本篇內(nèi)容介紹了“Python多線程具體應(yīng)用的方法”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

為了利用多核處理器,看過(guò)很多文檔,研究很多python相關(guān)技術(shù),全部是失望的。

1、Python:受限于GIL,被鎖住只能用一個(gè)CPU核心。

2、Twisted:其實(shí)只有一個(gè)線程,何談多核的利用。

3、Stackless:測(cè)試表明其多線程程序的速度比Python多線程使用的native線程方式要快一點(diǎn),不過(guò)一樣沒(méi)法用多核。

4、parallel Python:多進(jìn)程方式,感覺(jué)封裝的很齷齪,雖然翻譯完了文檔,但是仍然沒(méi)有興趣去使用。

現(xiàn)在的辦法:

1、負(fù)載均衡:后面在多臺(tái)服務(wù)器上啟動(dòng)多個(gè)Python程序?,F(xiàn)在我開(kāi)發(fā)的應(yīng)用基本上都是用twistd啟動(dòng)的daemon程序。

2、C/S應(yīng)用:各個(gè)進(jìn)程間用多進(jìn)程通信。

3、subprocess:使用這個(gè)模塊,利用外部進(jìn)程作worker,異步等待結(jié)果。

從這些解決方法之后,倒是感覺(jué)Python作為膠水語(yǔ)言其實(shí)多核利用也不是很必要。

pyprocessing 測(cè)試過(guò)沒(méi)?這個(gè)模塊將會(huì)被加入到python2.6中。
我用pyprocessing改造了Karrigell,性能獲得了很大提升。

在Quixote官方白皮書中已經(jīng)詳細(xì)描述了Quixote的工作模式。Quixote可以使用Python自代的http_server(主要用于開(kāi)發(fā)調(diào)試)和與Apache(或lighttpd)配合使用。

Quixote與Apache配合使用方式如下:

使用CGI,文檔中稱為egular CGI。被認(rèn)為效率***的一種方式,因?yàn)槊恳粋€(gè)請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的進(jìn)程。

使用fastCGI,CGI可以運(yùn)行fastCGI一定是可以應(yīng)用的。這也是豆瓣采用的方式。在Quixote作者的一個(gè)PPT中,他認(rèn)為fastCGI是buggy的。哦:(也不至于啊。我們正在尋找使用fastCGI的部署經(jīng)驗(yàn)。

使用mod_python,將python代碼嵌入到Apache中。

使 用SCGI,這是作者推薦的。使用Apache SCGI module scgi_mod將遵循SCGI協(xié)議Apache將請(qǐng)求發(fā)送到相應(yīng)的Socket如localhost:3001。而這個(gè)Socket由本地運(yùn)行的一個(gè) Python程序打開(kāi)。這個(gè)Python多線程將處理請(qǐng)求,并返回結(jié)果。

“Python多線程具體應(yīng)用的方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI