日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python和go語言的區別是什么

瀏覽:177日期:2022-07-16 18:35:42

背景

工作中的主力語言是Python,今年要搞性能測試的工具,由于GIL鎖的原因,Python的性能實在是慘淡,需要學一門性能高的語言來生成性能測試的壓力端。因此我把目光放在了現在的新秀Go。經過一段時間的學習,也寫了一個小工具,記一下這兩個語言的區別。

需求

工具是一個小爬蟲,用來爬某網站的某個產品的迭代記錄,實現邏輯就是運行腳本后,使用者從命令行輸入某些元素(產品ID等)后,腳本導出一個Excel文件出來。

最初的版本是用Python寫的,30行代碼不到就搞定了。這次用Go重寫,代碼量在110行左右。

接受輸入

第一步就是接受命令行的輸入內容,工具要給非技術人員用的,弄一個CLI不太合適,要的效果就是一行一行的輸入內容,用Python實現起來非常容易,像這樣:

app_id = raw_input(’請輸入app_id: ’)app_analysis = raw_input(’請輸入analysis: ’)

執行后就是一行一行的往下走,但是用Go就有點蛋疼了,完整的代碼如下:

func getPara() (string, string) { var i = 0 var appId, analysis string fmt.Print('請輸入appId:') scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { text := scanner.Text() if i == 0 { appId = text fmt.Print('請輸入analysis:') } else if i == 1 { analysis = text fmt.Print('程序初始化數據完畢。。。。請按任意鍵繼續') } else { break } i++ } return appId, analysis}

Go要實現CLI很方便,但是涉及到這種一行一行的輸入,要一直監聽Scan(),所以就有了上面蛋疼的循環處理,而且在必須要先打印信息,再來監聽內容,總體的寫的過程很惡心,也許是沒有找到更好的方法吧,實在是太逆天了。

發送請求

在發送請求方便,兩種語言倒是差別不太大,至少我寫的Get請求是這樣的。

Pythonparams = { 'analysis': app_analysis, 'appid': app_id, 'country': ’cn’ }r = requests.get(url, params)

Goq := req.URL.Query()q.Add('appid', appId)q.Add('analysis', analysis)q.Add('country', 'cn')req.URL.RawQuery = q.Encode()var resp *http.Responseresp, _ = http.DefaultClient.Do(req)

返回結果處理

在返回結果的處理上,Python的處理方式簡直是太友好了,直接調用json就處理了。

result = r.json()

但是Go就有點蛋疼了,由于是靜態語言,所以解包數據的時候需要先定義數據格式,比如返回的內容必須要先做如下的結構定義:

type ResultInfo struct { Code int Msg string Version []VersionInfo}type VersionInfo struct { Version string `json:'version'` ReleaseTime string `json:'release_time'` ReleaseNote string `json:'release_note'` AppName string `json:'app_name'` SubTitle string `json:'subtitle'`}

第一個ResultInfo是返回的數據,其中的Version也是一個數組對象,所以還要再定義一個數組對象,這樣才能調用方法來解包處理。

body, _ := ioutil.ReadAll(resp.Body)var rst = ResultInfo{}if err := json.Unmarshal(body, &rst); err != nil { fmt.Println(err)}

寫數據到Excel

這部分調用的都是第三方庫,所以沒什么可比性,代碼的實現完全依賴于第三方包。

無所不在的err != nil

Go的異常捕獲機制跟Python或者Java都不一樣,Python的異常捕獲使用的是try,except來包裹代碼塊,而Go用的是一個error對象,所以所有的Go代碼都會充斥著大量的

if err != nil { return nil, err }

這種鬼東西,這種異常機制在閱讀代碼的時候,非常惡心,極大的影響了閱讀體驗。

吐槽完后

基本上從書寫代碼的過程來看,Python的編碼效率比Go高出了很多很多,Go號稱語法靈活,可以極大的提高編碼效率,實際上并沒有,受限于靜態語言,相比于Python這種動態語言來說,編碼效率的差距還是非常大的。只能說比其他靜態語言編碼效率高。

但是!!!

Go的效率比Python高了太多。舉個例子,有一個計算斐波那契數的算法,Go的實現如下:func main() { const n = 40 starttime := time.Now() fibN := fib(n) endtime := time.Now() cost_time := endtime.Sub(starttime) fmt.Println(cost_time) fmt.Printf('rFibonacci(%d) = %dn', n, fibN)}func fib(x int) int { if x < 2 { return x } return fib(x-1) + fib(x-2)}

很簡單的一個遞歸,當N為40的時候,Go花了大概1秒左右的時間,執行結果如下:

876.838ms(消耗時間)Fibonacci(40) = 102334155

我們換成Python

def fib(x): if x<2: return x return fib(x-1)+fib(x-2)if __name__ == ’__main__’: import time begin = time.time() print fib(40) end = time.time() print end-begin

一樣的執行邏輯,執行的結果卻是:

10233415552.8657081127(消耗時間)

WTF!!! 用Go來處理效率是Python的50倍以上。

還沒完,工具寫完了總是要給人用的吧,Python寫完之后,如果給一個非技術人員使用,那么。。。

使用者:要怎么用?我:你裝一下Python,然后配好環境變量,順便把requests庫和xlwt庫也裝一下。我:要裝這兩個庫你要先裝一下pip。使用者:黑人問號臉!!!!!

如果你用Go來寫,打包完發過去就行了

使用者:要怎么用?我:你雙擊一下,讓你輸入什么就輸入什么

如果使用者是用Windows系統,那也沒問題,

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build xxx.go

直接打包成exe文件

知識點擴展:

什么是Python?

Python是一種功能強大的高級編程語言,主要用于科學和工程計算。它是一種高效的語言,優雅務實,簡單而強大,適合新手和專業人士的編程。

Python支持多種編程范例,并提出了一個大型標準庫,包括面向對象,命令式,功能性和程序性。

Go是什么?

Go是一種通用編程語言,由Google設計;它借鑒了許多其他許多好主意語言,同時避免導致復雜性和不可靠代碼的功能。

Go支持多范式,如程序,功能和并發。它的語法傳統上來自C語言,但它已經做了很多修改,以改進簡單性和安全性等功能。

到此這篇關于python和go語言的區別是什么的文章就介紹到這了,更多相關go語言和python有什么區別內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人午夜网址| 久久99国产精品视频| 日韩欧美网址| 国产66精品| 精品国产亚洲日本| 国产成人精品一区二区免费看京| 麻豆91精品91久久久的内涵| 美女视频免费精品| 四虎成人av| 久久久9色精品国产一区二区三区| 国语精品一区| 亚洲不卡系列| 九色精品91| 亚洲一区二区三区四区五区午夜| 日韩视频免费| 亚洲精品日韩久久| 日本91福利区| 国产精品九九| 麻豆mv在线观看| 欧美jjzz| 伊人国产精品| 免费一级欧美片在线观看网站 | 欧美韩日一区| 视频二区不卡| 噜噜噜躁狠狠躁狠狠精品视频| 日韩中文字幕一区二区三区| 男人的天堂亚洲一区| 日本中文字幕一区二区| 国产精品**亚洲精品| 在线天堂中文资源最新版| 亚洲福利一区| 亚洲理论在线| 精品视频一区二区三区在线观看| 偷拍精品精品一区二区三区| 视频一区在线播放| 国产精品对白久久久久粗| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 日韩欧美一区二区三区在线视频| 欧美va天堂在线| 久久不射网站| 国产精品a级| 国产韩日影视精品| 亚洲欧美久久久| 久久99免费视频| 激情六月综合| 国产美女视频一区二区| 久久在线免费| 欧美一区激情| 久久国产电影| 青草国产精品| 国产尤物精品| 麻豆视频久久| 久久成人亚洲| 国产高清不卡| 日本在线成人| 日韩精品欧美| 青青在线精品| 国产99亚洲| 国产亚洲人成a在线v网站| 久久蜜桃精品| 国产麻豆一区二区三区精品视频| 四虎影视精品| 国产精品久久久一区二区| 激情综合网站| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 亚洲a在线视频| 日韩精品五月天| 国产精品av久久久久久麻豆网| 国产精品xvideos88| 国产免费成人| 精品国产美女a久久9999| 午夜一级久久| 日韩欧美精品| 久久精品国产免费| 蜜臀av一区二区在线免费观看| 美女av在线免费看| 日韩**一区毛片| 91久久国产| 97精品国产| 国产精品网址| 丝袜美腿成人在线| 亚洲天堂成人| 成人午夜亚洲| 国产精品一级| 一区二区三区网站| 欧美另类综合| 日韩中文在线播放| 国内自拍视频一区二区三区| 日韩成人精品一区二区三区| 欧美~级网站不卡| 91欧美日韩| 久久伊人国产| 国产精品欧美三级在线观看 | 在线天堂中文资源最新版| 国产精品手机在线播放| 亚洲一区二区免费在线观看| 国内精品福利| 日韩免费福利视频| 精品国产乱码久久久久久1区2匹| 久久精品 人人爱| 亚州国产精品| 在线视频免费在线观看一区二区| 桃色av一区二区| 在线人成日本视频| 精品网站aaa| 高清久久一区| 福利精品一区| 国产一区二区三区四区五区传媒| 国产精品视频一区二区三区四蜜臂| 日韩精品视频在线看| 日韩一区二区三区精品视频第3页| 免费不卡在线观看| 日韩在线一区二区| 久久午夜视频| 亚洲天堂免费| 日韩精品欧美大片| 日韩黄色免费网站| 日本免费一区二区视频| 免费在线视频一区| 蜜臀国产一区二区三区在线播放| 狠狠操综合网| 黄色成人在线网址| 樱桃成人精品视频在线播放| 亚洲成人免费| 国产精品免费看| 视频一区二区不卡| 亚洲美女久久| 欧美日韩一区二区三区四区在线观看 | 婷婷综合五月| 国产在线欧美| 欧美综合国产| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久中文字幕av一区二区不卡| 亚洲黑丝一区二区| 国产视频久久| 自拍自偷一区二区三区| 亚洲精品福利| 18国产精品| 久久中文欧美| 国产理论在线| 在线日韩电影| 日韩中文字幕麻豆| 日本va欧美va瓶| 卡一精品卡二卡三网站乱码| 精品香蕉视频| 99免费精品| 亚洲欧洲美洲国产香蕉| 国产精品久久久久久久久久白浆| 国产91在线播放精品| 国产综合欧美| 一区二区三区网站| 国产精品mm| 日韩av福利| 老牛国产精品一区的观看方式| 亚欧洲精品视频在线观看| 国产精品一页| 欧美日韩国产v| 红桃视频国产精品| 日韩精品亚洲专区在线观看| 国产精品mm| 国产综合色产| 青青在线精品| se01亚洲视频| 婷婷久久免费视频| 国产一二在线播放| 亚洲日产av中文字幕| 麻豆视频一区| 91久久中文| 国产精品高清一区二区| 鲁鲁在线中文| 伊人www22综合色| 成人午夜网址| 水野朝阳av一区二区三区| 国产精品一国产精品| 久久中文亚洲字幕| 国产精选一区| 欧美特黄一区| 欧美激情99| 免费人成网站在线观看欧美高清| 久久av电影| 性一交一乱一区二区洋洋av| 久久精品一区| 亚洲一区网站| 久久亚洲资源中文字| 婷婷激情一区| 日韩一区中文| 成人午夜国产| 国产日韩一区| 午夜国产一区二区| 国产精品久久久网站| 99国产精品久久久久久久| 欧美精品影院| 尤物精品在线| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 免费精品国产| 国产精品久久久免费| 香蕉国产精品| 九九99久久精品在免费线bt| 影音先锋久久精品| 国产成人精选|