您的位置: 首頁 >科技 >

編程語言 Instagram如何馴服數(shù)百萬行的Python怪物

2022-07-15 19:10:02 編輯:向嵐春 來源:
導(dǎo)讀 Facebook擁有的Instagram已詳細(xì)說明了其解決方案,以增強(qiáng)Python的優(yōu)勢并減輕該語言在大型項目中影響生產(chǎn)力的方式來改進(jìn)該應(yīng)用程序。 在Ins...

Facebook擁有的Instagram已詳細(xì)說明了其解決方案,以增強(qiáng)Python的優(yōu)勢并減輕該語言在大型項目中影響生產(chǎn)力的方式來改進(jìn)該應(yīng)用程序。

在Instagram上所有過于完美的自拍照的背后,F(xiàn)acebook擁有的社交網(wǎng)絡(luò)是基于流行的編程語言Python建立的。

正如Instagram工程師最近詳細(xì)介紹的那樣,Instagram服務(wù)器是數(shù)百萬千禧一代用于共享朋友和自己的照片的智能手機(jī)應(yīng)用程序的后端,幾乎完全由Python(僅次于Java和JavaScript的第三流行語言)提供動力。

SEE: 六種按需編程語言:入門(免費(fèi)PDF)

為了提高開發(fā)人員的工作效率,F(xiàn)acebook工程師開發(fā)了開源工具,例如Python靜態(tài)類型檢查器Pyre,Instagram用來分析其服務(wù)器代碼庫。Instagram工程師還創(chuàng)建了開發(fā)人員工具,例如LibCST,用于分析Python代碼。

Instagram工程師的主要目標(biāo)是在大規(guī)模使用Python時盡可能地提高生產(chǎn)力,他們已經(jīng)揭示了使用該語言時如何克服“一些痛點(diǎn)”。

該公司還希望吸引新的人才,即使編碼人員不一定是Python專家,這也是為什么它想向編碼候選人解釋其如何創(chuàng)建工具來幫助他們提高生產(chǎn)力。

它還希望讓喜歡使用Python的開發(fā)人員滿意,因此該公司正在將Python推向極限。這就是Instagram工程師為Python開發(fā)“嚴(yán)格模塊”的原因。

“一個合理的選擇可能是,我們將Python擴(kuò)展到了預(yù)期之外。它對于較小的代碼庫上的小型團(tuán)隊非常有用,這些團(tuán)隊可以圍繞如何使用它保持良好的紀(jì)律,而我們應(yīng)該改用一種不太動態(tài)的語言。” Instagram工程師卡爾梅耶(Carl Meyer)寫道。

“但是我們已經(jīng)超出了甚至可以進(jìn)行重寫的代碼庫大小的角度。更重要的是,盡管有這些痛點(diǎn),但我們?nèi)匀幌M鸓ython擁有更多優(yōu)勢,并且總體上,我們的開發(fā)人員喜歡在Python中工作。我們要弄清楚如何使Python在如此規(guī)模下工作,并隨著我們的成長而繼續(xù)工作。” Meyer寫道。

他解釋說Python非常適合快速迭代,因?yàn)槟梢赃M(jìn)行更改并查看結(jié)果,而無需編譯代碼。

他寫道:“但是,有了幾百萬行代碼(以及混亂的依賴圖),這種優(yōu)勢就開始變糟了。”

Instagram服務(wù)器最多需要一分鐘才能啟動,這在測試新功能時轉(zhuǎn)化為嚴(yán)重的延遲,并且足夠長的時間使開發(fā)人員無法完成另一項工作而無法完成任務(wù)。

盡管Python可以加快開發(fā)速度,但要在Instagram規(guī)模上使用它仍然存在挑戰(zhàn)。

“由于導(dǎo)入可能會產(chǎn)生任意副作用,因此沒有安全的方法(在Python中)遞增地重新加載服務(wù)器。無論更改有多小,我們每次都必須從頭開始,導(dǎo)入所有這些模塊,然后重新創(chuàng)建所有這些模塊。類和函數(shù),重新編譯所有這些正則表達(dá)式,等等。”

“通常,自從上次重新加載服務(wù)器以來,99%的代碼都沒有更改,但是無論如何我們都必須重做所有緩慢的工作。”

Instagram在大規(guī)模使用Python方面的挑戰(zhàn)反映了Salesforce在其Einstein Analytics產(chǎn)品上遇到的一些困難。Salesforce最近取消了Python代碼,轉(zhuǎn)而支持Google支持的Go或Golang。

Salesforce架構(gòu)師解釋說:“ Python非常適合快速編寫更高級別的應(yīng)用程序,但并不總是能夠提供企業(yè)級所需的高性能。”

SEE:Salesforce:為什么我們在Einstein Analytics中放棄Google的Go語言使用Python

就Instagram而言,Meyer補(bǔ)充說,這不僅會損害開發(fā)人員的工作效率,而且會導(dǎo)致“大量生產(chǎn)中的計算浪費(fèi)”,因?yàn)镮nstagram不斷在生產(chǎn)服務(wù)器上部署和重新加載網(wǎng)站。

Meyer將“嚴(yán)格模塊”描述為Instagram在大規(guī)模生產(chǎn)環(huán)境中使用時對Python弱點(diǎn)的回答

“嚴(yán)格的模塊對模塊頂層可能發(fā)生的事情施加了一些限制。所有模塊級代碼,包括在模塊級調(diào)用的裝飾器和函數(shù)/初始化程序,必須是純凈的(無副作用,無I / O)。這已驗(yàn)證通過抽象解釋器靜態(tài)地在編譯時進(jìn)行,”他說。

“這意味著嚴(yán)格的模塊在導(dǎo)入時沒有副作用:導(dǎo)入時副作用之間的不良相互作用不再可能。”


免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!

最新文章

精彩推薦

圖文推薦

點(diǎn)擊排行

2016-2022 All Rights Reserved.平安財經(jīng)網(wǎng).復(fù)制必究 聯(lián)系QQ280 715 8082   備案號:閩ICP備19027007號-6

本站除標(biāo)明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。