您的位置: 首頁 >科技 >

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

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

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

在Instagram上所有過于完美的自拍照的背后,Facebook擁有的社交網絡是基于流行的編程語言Python建立的。

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

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

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

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

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

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

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

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

他解釋說Python非常適合快速迭代,因為您可以進行更改并查看結果,而無需編譯代碼。

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

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

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

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

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

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

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

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

就Instagram而言,Meyer補充說,這不僅會損害開發(fā)人員的工作效率,而且會導致“大量生產中的計算浪費”,因為Instagram不斷在生產服務器上部署和重新加載網站。

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

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

“這意味著嚴格的模塊在導入時沒有副作用:導入時副作用之間的不良相互作用不再可能。”


免責聲明:本文由用戶上傳,如有侵權請聯系刪除!

2016-2022 All Rights Reserved.平安財經網.復制必究 聯系QQ280 715 8082   備案號:閩ICP備19027007號-6

本站除標明“本站原創(chuàng)”外所有信息均轉載自互聯網 版權歸原作者所有。