當前位置:成語大全網 - 新華字典 - golang 和Python 那個好

golang 和Python 那個好

沒有絕對好的和絕對壞的,而是使用的時候,充分利用他們的優點即可

Go對比Python的優點如下:

壹、部署簡單。 Go 編譯生成的是壹個靜態可執行文件,除了 glibc 外沒有其他外部依賴。這讓部署變得異常方便:目標機器上只需要壹個基礎的系統和必要的管理、監控工具,完全不需要操心應用所需的各種包、庫的依賴關系,大大減輕了維護的負擔。這和 Python 有著巨大的區別。由於歷史的原因, Python 的部署工具生態相當混亂,比如 setuptools, distutils, pip, buildout 的不同適用場合以及兼容性問題。官方 PyPI 源又經常出問題,需要搭建私有鏡像,而維護這個鏡像又要花費不少時間和精力。

二、並發性好。 Goroutine 和 channel 使得編寫高並發的服務端軟件變得相當容易,很多情況下完全不需要考慮鎖機制以及由此帶來的各種問題。單個 Go 應用也能有效的利用多個 CPU 核,並行執行的性能好。這和 Python 也是天壤之比。多線程和多進程的服務端程序編寫起來並不簡單,而且由於全局鎖 GIL 的原因,多線程的 Python 程序並不能有效利用多核,只能用多進程的方式部署;如果用標準庫裏的 multiprocessing 包又會對監控和管理造成不少的挑戰(我們用的 supervisor 管理進程,對 fork 支持不好)。部署 Python 應用的時候通常是每個 CPU 核部署壹個應用,這會造成不少資源的浪費,比如假設某個 Python 應用啟動後需要占用 100MB 內存,而服務器有 32 個 CPU 核,那麽留壹個核給系統、運行 31 個應用副本就要浪費 3GB 的內存資源。

三、良好的語言設計。從學術的角度講 Go 語言其實非常平庸,不支持許多高級的語言特性;但從工程的角度講, Go 的設計是非常優秀的:規範足夠簡單靈活,有其他語言基礎的程序員都能迅速上手。更重要的是 Go 自帶完善的工具鏈,大大提高了團隊協作的壹致性。比如 gofmt 自動排版 Go 代碼,很大程度上杜絕了不同人寫的代碼排版風格不壹致的問題。把編輯器配置成在編輯存檔的時候自動運行 gofmt ,這樣在編寫代碼的時候可以隨意擺放位置,存檔的時候自動變成正確排版的代碼。此外還有 gofix, govet 等非常有用的工具。

四、執行性能好。雖然不如 C 和 Java ,但通常比原生 Python 應用還是高壹個數量級的,適合編寫壹些瓶頸業務。內存占用也非常省。