就是不買思域 高顏值合資家用車有什麼好的選擇?

59-22。89萬凌渡的設計還是秉承了大眾一貫的沉穩風格,但是主要是整車的線條勾勒上凸顯出了一種運動轎跑的感覺,修長的車身讓人很容易誤以為它其實是一款中型轎車,而沉穩中透露出一種運動風的設計也讓大眾凌渡的接受人群非常廣泛。

前言

作為一款家用轎車,動力表現和極限性能往往不是這類消費者所注重的東西,更多人或許僅僅是要一台車有着漂亮的外觀和不錯的空間表現,重要的是,價格一定要合適。十五萬左右的售價或許是最多人考慮的。

2016年,可以說合資緊湊型轎車市場被本田思域搶盡了風頭,各種的加價提車讓多少預算有限的消費者頭疼不已。除了本田思域之外,還有什麼高顏值運動范兒的家用轎車可以受到消費者的青睞?今天的幾款車或許可以滿足這些消費者的胃口。

東風標緻308

指導價格:9.97-15.97萬

東風標緻308使用了全新的家族化點陣式前臉,看上去更加俊朗,肌肉線條豐富,更凸顯出這款緊湊型轎車的運動氛圍。車身側麵線條柔和修長,營造出一種小溜背的感覺,車尾設計簡約為主,以亮面黑色烤漆提升辨識度的同時,配合以獅爪造型的尾燈,更彰顯了一種個性。

推薦車型:標緻308 2016款230THp豪華版;指導價格:13.57萬。

上汽大眾凌渡

指導價格:14.59-22.89萬

凌渡的設計還是秉承了大眾一貫的沉穩風格,但是主要是整車的線條勾勒上凸顯出了一種運動轎跑的感覺,修長的車身讓人很容易誤以為它其實是一款中型轎車,而沉穩中透露出一種運動風的設計也讓大眾凌渡的接受人群非常廣泛。

推薦車型:凌渡 230TSI DSG風尚版;指導價格:15.99萬。

起亞-K3

指導價格:9.68-15.08萬

起亞近年來一直秉承着一種剛硬運動的風格造車,也正因為如此,起亞的車型吸引了相當大一部分年輕人爭相購買,起亞K3同樣使用了家族式的虎嘯式前臉設計,整車以長車頭,短車尾的轎跑式造型為主要設計語言,這也使得起亞K3的年輕定位更加明顯。

推薦車型:2016款起亞K3 1.4T 自動GLS;指導價格:13.28萬。

全文總結:以上三款車型都是在目前終端上有着不小的優惠幅度的車型,而且在品控和動力總成上也是比較可靠的類型,相比較到目前還有不少地方需要加價提車,候車時長較久的車型來說,只要你對品牌沒有頑固的執着,就可以考慮一下啦。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

網頁設計最專業,超強功能平台可客製化

為什麼年輕人第一輛車都愛選這些SUV?因為只賣6萬出頭啊…

那今天推薦的這幾款車就太適合你了。近兩年自主品牌的不斷髮力,汽車的底價被一次次刷新,買車變得並不像從前那般高攀莫及,各類車型的受眾群體也變得更加清晰明了,像是各大合資廠專門生產的一些符合年輕人市場的微型車或是小型車正是為了迎合我們這類剛出社會不久的年輕人喜好,而本次推薦的對象則是目前消費者最熱衷的SUV車型,這些SUV在擁有不錯的品質同時售價比起傳統的小型車也更具優勢。

近兩年自主品牌的不斷髮力,汽車的底價被一次次刷新,買車變得並不像從前那般高攀莫及,各類車型的受眾群體也變得更加清晰明了,像是各大合資廠專門生產的一些符合年輕人市場的微型車或是小型車正是為了迎合我們這類剛出社會不久的年輕人喜好,而本次推薦的對象則是目前消費者最熱衷的SUV車型,這些SUV在擁有不錯的品質同時售價比起傳統的小型車也更具優勢。

上述的四款車都有着各自的特點,他們所面對的目標消費人群都是預算不是很充足但追求個性又不願意放棄配置的年輕消費者,個性帥氣的外觀設計,可玩性極高的內部裝備,舒適省心的駕乘感受這些都是他們買車的訴求,而這幾款車無疑在這幾個方面都是非常合格的。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※回頭車貨運收費標準

※推薦評價好的iphone維修中心

※超省錢租車方案

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

※推薦台中搬家公司優質服務,可到府估價

10萬級這些車為何長盛不衰?值得買嗎?

不過至少在每月榜單上名列前茅的都不錯既然質量過關所以今天我們從配置入手。10萬左右的購車預算,除了買這種入門級別的合資車你還能買到更高配置、動力更強的國產車型。如果你是一個配置控而且預算不夠過的話,選擇這樣一台國產車型更好。

高價低配?

”高價低配“是最多消費者爭議的問題,根據社會調查,大部分消費者在首次購車時都會率先考慮選擇合資車型,而且在購車預算也大多數在10-15萬的價格區間。有的合資車價格高而且簡配嚴重,還不如選擇國產車,難道這些入門的合資車就這麼不堪?帶着這個問題,我們來看看這些15萬丐中丐版的合資A級車是否這麼不堪!

為什麼還選擇合資?

因為主管覺得“質量好”呀!

說全部的合資車質量都好

是錯的!

不過至少在每月榜單上

名列前茅的都不錯

既然質量過關

所以今天我們從配置入手!

10萬左右的購車預算,除了買這種入門級別的合資車你還能買到更高配置、動力更強的國產車型!如果你是一個配置控而且預算不夠過的話,選擇這樣一台國產車型更好。而這一個價位區間的合資車型,頂配車型的作用在於拉高車型配置,提升檔次;而入門版車型的最大任務的拉低車型的售價。所以一般這類入門版的車型廠家會選擇不排產或者你需要等待一段很長的時間才能拿到你的愛車,所以需要慎重考慮。你能發現,在介紹車型是都偏向於推薦中配以及中低配車型,原因在於配置已經足夠使用,而且作為主銷車型提車的時間也會更快。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※回頭車貨運收費標準

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※推薦評價好的iphone維修中心

※教你寫出一流的銷售文案?

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

都是今年新上市的合資SUV,法系雙雄怎麼選?

6T、1。8T兩套渦輪增壓發動機,與之配合的是一款6速手自一體變速箱,前者最大馬力167匹,峰值扭矩245牛米。後者最大馬力204匹,峰值扭矩280牛米。兩台車型的調校特性取向有着較大差異。科雷傲“自吸+CVT”的搭配很明顯在舒適度和平順性上要比標緻4008“渦輪+手自一體”的搭配要好一些,也許會有人擔心出自日產平台的科雷傲底盤會不會顯得單薄,根據科雷嘉與逍客(同樣出自CMF平台)的差異來看,雷諾在車輛調校上會更加註重底盤的緊繃感,底盤尋跡性和整合性的提升會讓科雷嘉更像一台歐系車,相信與奇駿同平台但不同品

前言

SUV車型的上市永遠不缺乏關注度,伴隨着現在越來越多的人選擇城市SUV,各大車企推出SUV產品的頻率和數量都在增加,除了打價格戰、配置戰之外,某些不甘於平凡的車型玩起了設計與個性的主題,在外觀上做足了功夫。

法系車的存在一直以來都給人以外觀個性設計前衛的印象,在今年兩大法系品牌雷諾和標緻分別推出了旗下定位較為高端的科雷傲和4008,這兩款SUV也是很多對於購車崇尚“不跟隨”觀念的消費者非常關注的對象,那麼,同樣打“個性牌”的兩款SUV會碰撞出怎樣的火花?

外觀:收斂VS誇本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※回頭車貨運收費標準

新生代的家轎王-6萬多艾瑞澤5和遠景到底怎麼選

不過遠景的側麵線條有些僵硬,看起來似乎有些老氣。低配的艾5由於缺少了中控大屏,所以看起來似乎有些落伍了。至於中控的造型,編者覺得有一點像生氣的機器人。遠景的中控要比艾5強了好多,大屏幕使得遠景看起來時尚許多,中控台都披上了一層蒙皮,手感比艾5強很多。

昨晚剛準備睡覺,就被一陣急促的電話鈴聲吵到了,一看是好基友的電話,就不耐煩的質問他為啥大晚上不讓我睡覺打電話影響我休息。但是基友說想六七萬買個車,初步目標鎖定在了遠景和艾瑞澤5。問我怎麼選擇比較好。

作為從小玩到大的小夥伴,看在我們多年的情誼上,我就耐心給他解答了一下。他的預算在5-7萬,其實艾瑞澤5和遠景都是非常明智的選擇。因為這兩款車憑藉這極高的性價比,得到了不少消費者的擁戴。11月份兩台車的銷量輕鬆破萬,從中也可以看出來它們得到了不少消費者的肯定。

但是這兩台車子如何選擇呢?既然選擇肯定要做對比,於是編者分別從兩款車中各選取了一款性價比和關注度都比較高的車子,同時車子的售價也相同,而且市場上均無優惠。這樣對比起來更客觀公平。

艾瑞澤5 2016款 1.5L 手動領尚版(5.89萬)

VS

遠景 2017款 1.5L 手動幸福版(5.89萬)

首先是外觀的對比,車頭部分,兩個車子都是採用了家族式的設計風格,都是盡量朝着年輕化的趨勢發展。艾瑞澤5的車頭飽滿,一條鍍鉻裝飾的飾條橫穿前進氣格柵。

遠景則採用了回紋型的進氣格柵造型,整個車頭鍍鉻裝飾較多,看起來更加精緻。

艾5的車身尺寸為4572*1825*1482mm,軸距為2670mm,艾5的側面造型更加飽滿,車尾較短。看起來時尚。

遠景的遠景的4590*1734*1470mm,軸距為2600mm,尺寸和艾5互有優勢,難分伯仲。不過遠景的側麵線條有些僵硬,看起來似乎有些老氣。

低配的艾5由於缺少了中控大屏,所以看起來似乎有些落伍了。至於中控的造型,編者覺得有一點像生氣的機器人…

遠景的中控要比艾5強了好多,大屏幕使得遠景看起來時尚許多,中控台都披上了一層蒙皮,手感比艾5強很多。同時中控的造型更有設計感,視覺感受要舒服很多。

艾5的軸距比遠景稍微大一點點,但是由於車內空間利用的更合理,所以艾5的後排乘坐空間表現很好。

遠景就遜色好多,後排空間較小,同時地板中間凸起較高,影響舒適性,不過皮質座椅可以稍微給遠景挽回一些面子。

至於配置,可以遠景的配置還是要高於艾5的配置。

艾5的動力系統為1.5升 116馬力+5擋手動,遠景的為1.5升 109馬力+5擋手動,都是1.5L自吸發動機,雖然艾5的馬力更大一點,但是日常駕駛起來,兩個車子的動力感受差不多,沒有哪一個的動力明顯好於另一個的,畢竟這個價位的車子,動力能滿足日常行駛已經很不錯了。

對於駕駛感受,從編者試駕的角度來看,似乎艾5的底盤調教更為紮實、厚重,不過遠景的底盤調教也算是不錯的。但是艾5有一點很讓人抓狂,就是轉向太重了,如果是女士開,會有點難受,當然,“女漢紙”除外…

總結:編者認為,艾5的外觀更加時尚,但是內飾遠景更勝一籌,空間艾5就明顯大於遠景了,動力都是半斤對八兩,駕駛感受差距艾5以微弱的優勢領先。雖然艾5有ESp,但是其它配置不是很豐富,遠景則是除了沒有ESp,其它配置都可以。最後,如果你鍾愛艾5,可以考慮艾5的次低配,性價比更高。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

※教你寫出一流的銷售文案?

網頁設計最專業,超強功能平台可客製化

※產品缺大量曝光嗎?你需要的是一流包裝設計!

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

10萬出頭就能買到這些會自己開尾門的SUV了

68萬點評:北汽幻速S6最吸引人的,就莫過於那原創度極高的外觀了,在模仿化嚴重的汽車市場難能可貴,還是就是它達到2700mm的軸距,接近4。7米長的車身長度,使其擁有很寬敞的乘坐空間,全景影像、併線輔助、車道偏離預警、自動駐車、座椅加熱、這麼豐富的配置居然出現在11萬多的車型上,性價比超高。

不知道你有沒有經歷過這樣的尷尬時刻

雨水天氣開車子出去後車身有可能沾滿泥巴

再去後備拿東西的時候就不願下手了

如果這時候你的車子有電動尾門

你只需輕輕的按一下鑰匙

或者用腳掃一下車底

就很好的解決你搬東西解放不了雙手

或者要打開沾滿灰塵的後備箱的問題了

一般這麼屌的配置在合資SUV上也要20萬以上

現在越來越牛掰的自主品牌車型10幾萬就有所配備了

眾泰T600

指導價:7.98-14.98萬

點評:定位於家用SUV的眾泰T600,可謂是一個“高大全”,高顏值、空間大、配置豐富,推出的運動版車型無論是外觀還是內飾都兼顧着時尚與運動的元素,2.0T的動力雖說不能給你多大的激情但是日常家用已經足夠,加之調校舒適的底盤和實惠的價格讓人很容易接受。

北汽幻速S6

指導價:7.98-11.68萬

點評:北汽幻速S6最吸引人的,就莫過於那原創度極高的外觀了,在模仿化嚴重的汽車市場難能可貴,還是就是它達到2700mm的軸距,接近4.7米長的車身長度,使其擁有很寬敞的乘坐空間,全景影像、併線輔助、車道偏離預警、自動駐車、座椅加熱、這麼豐富的配置居然出現在11萬多的車型上,性價比超高。

東南DX7

指導價:9.69-13.99萬

點評:外觀由著名的賓尼法利納所設計的東南DX7,看上去是給人非常洋氣的感覺,內飾做工用料也是相當的高大上,浮雕式的中控台很有設計感,豐富的配置讓它有着很強的競爭力,後排的空間表現在同級別車型來說非常出色,擴展性好;且車輛整體調校偏向於舒適,有着很好的駕乘感受。

總結:以上三款車型都擁有着高顏值的外觀,還有內飾中控無論是造型設計還是用料,都有着很高的水準,其次配置上非常豐富,空間也足夠寬敞,動力日常足夠,都是性價比很高的車型。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※教你寫出一流的銷售文案?

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

※超省錢租車方案

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※推薦台中搬家公司優質服務,可到府估價

10萬級顏值數一數二!這款合資三廂車還很好開?

而在SpORT模式下,它的動力輸出變得激進,變速箱的換擋時機更靠後、開起來相當的“沖”。而ECO模式下,變速箱會把發動機的轉速緊緊控制在3000轉以下,動力響應變得遲緩一點。領動的底盤其實還是比較有韌性的,雖然採用后扭力梁式非獨立懸架,但是走爛路時車身沒有太大幅度的彈跳。

主打性價比的韓系車,因為外觀設計常常緊貼着潮流,所以很多85后、90后的朋友,都會更多留意到它們。今天編者就來和大家聊聊,前段時間我試駕過的現代領動!

北京現代 領動

指導價:9.98-15.18萬

首先外觀設計方面,領動是名副其實的目光收割器。中網六邊形的大嘴、流線型的車燈以及車身線條,如果配上檸檬黃、深海藍這兩種車身顏色,是相當前衛、運動的。

而從定價來看,9.98萬的起售價比較低,而編者試駕的是最走量的1.6L+6AT的車型。它的定價為11.18-14.58萬,市面上一般有着5000元左右的優惠。

1.6L自動擋車型採用了缸內直噴的供油方式,最大功率130馬力、最大扭矩157牛米。在功率方面表現不錯。

搭配6擋手自一體變速箱,它提供了ECO/SpORT駕駛模式,主要是通過換擋的時機選擇來決定動力和油耗的表現。

進入到車內,它的內飾給你的感覺是簡潔明了的,按鍵的布局也簡約、常規。而黑色的內飾,也帶有一定運動感。

方向盤的尺寸中等,而多功能按鍵使用起來也是順手拈來。在人機工程學上完善度不錯。

駕駛感受怎樣?

首先,領動的油門調校相當靈敏,起步時轉速提升相當快、提速過程爽快。而在SpORT模式下,它的動力輸出變得激進,變速箱的換擋時機更靠後、開起來相當的“沖”。

而ECO模式下,變速箱會把發動機的轉速緊緊控制在3000轉以下,動力響應變得遲緩一點。

領動的底盤其實還是比較有韌性的,雖然採用后扭力梁式非獨立懸架,但是走爛路時車身沒有太大幅度的彈跳。

只是懸架對於大震動的過濾稍有一點生硬,而對於像減速帶一樣的震動過濾得不錯。

油耗如何?

1.6L自動擋車型車主口碑油耗:7.2L/100km。

1.6L手動擋車型車主口碑油耗:6.8L/100km。

因為自動擋車型採用了缸內直噴等技術,加上變速箱表現不錯,所以油耗也比較的低。

另外,1.6L自動擋車型的百公里加速時間約為11.26秒,屬於中等水平。

競爭對手:

上汽通用別克-英朗

指導價:10.99-15.99萬

英朗和領動也是配置高、性價比給力的車型。不過英朗設計大氣穩重,而領動的設計則比較超前。所以它們針對的消費群體還是有一定差異。

編者語:

領動能滿足很多年輕消費者的需求,設計漂亮、動力夠用、油耗比較經濟。而如果你喜歡這款車,就可以先去4S店試駕一番再作決定。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

網頁設計最專業,超強功能平台可客製化

扭矩達230牛米!這輛前衛車型有思域、卡羅拉強嗎?

而懸架具有彈性,對於大小震動都做出了不錯的過濾。只是懸挂行程比起兩廂的標緻308S更長,所以過彎時的車身擺動稍大些,不過支撐性已經不錯了。油耗表現如何。1。2T自動擋車型的車主口碑油耗:7。5L/100km。1。2T發動機的排量小,而且變速箱在D擋時的經濟性不錯。

最近有很多粉絲提議我們多聊一下靈活好開的家用轎車,這讓編者想起前段時間試駕過朋友的標緻308 1.2T車型。

標緻308 1.2T車型售價:10.97-13.57萬

308的外觀設計是標緻最新設計語言的縮影,這個設計年輕、時尚,車尾的線條流暢,比較大氣。兩個尾燈之間還採用了黑色裝飾板來點綴,讓它給人一種過目不忘的感覺。

它靈活好開,有駕駛樂趣的同時也給乘客不錯的舒適性,下面我們就來聊聊編者對這款車的感受!

動力總成採用了新穎的1.2T(三缸)渦輪增壓發動機,最大功率136馬力、峰值扭矩還達到了230牛米/1750-3500轉!動力參數漂亮,而編者的朋友買這款車也是衝著這發動機去的。

傳動方面搭配的是6擋手自一體變速箱,而同級別的日系對手,如卡羅拉1.2T車型採用的則是CVT變速箱。

上到車內,前衛的內飾讓年輕人覺得它前衛和很有設計感。尺寸很小的方向盤充滿玩味!

但問題是,儀錶盤的位置設計在中控的頂部,容易出現方向盤頂端擋住部分儀錶盤的情況。這與方向盤的高度調節和駕駛人的身高有關,所以在駕駛前盡量調好方向盤的位置。

駕駛起來,在D擋模式下,它的調校側重於降低油耗,所以總是积極升擋、降擋出現一點點“猶豫”的情況,在市區中代步動力夠用也平順。

而打開運動模式,變速箱的降擋直接乾脆!發動機在1900轉以後的動力爆發比較猛,提速能力強,而且在時速超過100km/h后,再加速能力也不錯,這套動力總成實際的表現已經接近1.8L的自然吸氣發動機了,所以在動力方面不用擔心。

小尺寸方向盤握感出眾,指向性精準,所以轉動起來充滿着玩味。而懸架具有彈性,對於大小震動都做出了不錯的過濾!只是懸挂行程比起兩廂的標緻308S更長,所以過彎時的車身擺動稍大些,不過支撐性已經不錯了!

油耗表現如何?

1.2T自動擋車型的車主口碑油耗:7.5L/100km。

1.2T發動機的排量小,而且變速箱在D擋時的經濟性不錯!所以油耗是較低的。

競爭對手

東風本田-思域

1.0T車型售價:11.59-12.79萬

在駕駛體驗上,標緻308 1.2T車型表現更好、也更有樂趣,而思域的空間表現更佳,不過購買思域的買家大多會選擇1.5T車型,所以兩者在進行着差異化競爭!

一汽豐田-卡羅拉

1.2T車型售價:10.98-14.38萬

卡羅拉採用的1.2T發動機最大功率為116馬力,數據沒有標緻308的漂亮,但是卡羅拉普遍優惠較大、車型選擇豐富,所以性價比較高些。

最後總結:

其實標緻308在駕駛樂趣和舒適性方面達到了不錯的平衡,如果你想要一款開起來有樂趣、不乏味的家用車,它是不錯的選擇。而它的優惠沒有對手車型多,所以性價比不算太高。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※回頭車貨運收費標準

※推薦評價好的iphone維修中心

※超省錢租車方案

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

※推薦台中搬家公司優質服務,可到府估價

要大,要硬,要安全,才是一輛好車

總結:一直以來,物流用途的商用車輛一味地追求大空間和低排放,注重燃油經濟性和裝載能力的提高卻忽視了一輛汽車最應該擁有的安全性能,而不斷在設計、品質、智能、安全方面超越自身的新全順卻從未被對手超越,擁有好品牌、大空間、高安全的福特新全順,是真正意義上的商用車佼佼者,也是創業者和物流運輸業的絕佳選擇。
老陳是物流公司創始人
因為業務擴本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※回頭車貨運收費標準

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※推薦評價好的iphone維修中心

※教你寫出一流的銷售文案?

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

Python3 源碼閱讀-深入了解Python GIL

今日得到: 三人行,必有我師焉,擇其善者而從之,其不善者而改之。

現在已經是2020年了,而在2010年的時候,大佬David Beazley就做了講座講解Python GIL的設計相關問題,10年間相信也在不斷改善和優化,但是並沒有將GIL從CPython中移除,可想而知,GIL已經深入CPython,難以移除。就目前來看,工作中常用的還是協程,多線程來處理高併發的I/O密集型任務。CPU密集型的大型計算可以用其他語言來實現。

1. GIL

In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (However, since the GIL exists, other features have grown to depend on the guarantees that it enforces.) —– Global Interpreter Lock

為了防止多線程共享內存出現競態問題,設置的防止多線程併發執行機器碼的一個Mutex。

2. python32 之前-基於opcode數量的調度方式

在python3.2版本之前,定義了一個tick計數器,表示當前線程在釋放gil之前連續執行的多少個字節碼(實際上有部分執行較快的字節碼並不會被計入計數器)。如果當前的線程正在執行一個 CPU 密集型的任務, 它會在 tick 計數器到達 100 之後就釋放 gil, 給其他線程一個獲得 gil 的機會。

(圖片來自 Understanding the Python GIL(youtube))

以opcode個數為基準來計數,如果有些opcode代碼複雜耗時較長,一些耗時較短,會導致同樣的100個tick,一些線程的執行時間總是執行的比另一些長。是不公平的調度策略。

(圖片來自Understanding-the-python-gil)

如果當前的線程正在執行一個 IO密集型的 的任務, 你執行 sleep/recv/send(...etc) 這些會阻塞的系統調用時, 即使 tick 計數器的值還沒到 100, gil 也會被主動地釋放。至於下次該執行哪一個線程這個是操作系統層面的,線程調度算法優先級調度,開發者沒辦法控制。

在多核機器上, 如果兩個線程都在執行 CPU 密集型的任務, 操作系統有可能讓這兩個線程在不同的核心上運行, 也許會出現以下的情況, 當一個擁有了 gil 的線程在一個核心上執行 100 次 tick 的過程中, 在另一個核心上運行的線程頻繁的進行搶佔 gil, 搶佔失敗的循環, 導致 CPU 瞎忙影響性能。 如下圖:綠色部分表示該線程在運行,且在執行有用的計算,紅色部分為線程被調度喚醒,但是無法獲取GIL導致無法進行有效運算等待的時間。

由圖可見,GIL的存在導致多線程無法很好的利用多核CPU的併發處理能力。

3. python3.2 之後-基於時間片的切換

由於在多核機器下可能導致性能下降, gil的實現在python3.2之後做了一些優化 。python在初始化解釋器的時候就會初始化一個gil,並設置一個DEFAULT_INTERVAL=5000, 單位是微妙,即0.005秒(在 C 裏面是用 微秒 為單位存儲, 在 python 解釋器中以秒來表示)這個間隔就是GIL切換的標誌。

// Python\ceval_gil.h
#define DEFAULT_INTERVAL 5000

static void _gil_initialize(struct _gil_runtime_state *gil)
{
    _Py_atomic_int uninitialized = {-1};
    gil->locked = uninitialized;
    gil->interval = DEFAULT_INTERVAL;
}

python中查看gil切換的時間

In [7]: import sys
In [8]: sys.getswitchinterval()
Out[8]: 0.005

如果當前有不止一個線程, 當前等待 gil 的線程在超過一定時間的等待后, 會把全局變量 gil_drop_request 的值設置為 1, 之後繼續等待相同的時間, 這時擁有 gil 的線程看到了 gil_drop_request 變為 1, 就會主動釋放 gil 並通過 condition variable 通知到在等待中的線程, 第一個被喚醒的等待中的線程會搶到 gil 並執行相應的任務, 將gil_drop_request設置為1的線程不一定能搶到gil

4 condition variable相關字段

  1. locked : locked 的類型是_Py_atomic_int, 值-1表示還未初始化,0表示當前的gil處於釋放狀態,1表示某個線程已經佔用了gil,這個值的類型設置為原子類型之後在 ceval.c 就可以不加鎖的對這個值進行讀取。
  2. interval:是線程在設置gil_drop_request這個變量之前需要等待的時長,默認是5000毫秒
  3. last_holder:存放了最後一個持有 gil 的線程的 C 中對應的 PyThreadState 結構的指針地址, 通過這個值我們可以知道當前線程釋放了 gil 后, 是否有其他線程獲得了 gil(可以採取措施避免被自己重新獲得)
  4. switch_number: 是一個計數器, 表示從解釋器運行到現在, gil 總共被釋放獲得多少次
  5. mutex:是一把互斥鎖, 用來保護 locked, last_holder, switch_number 還有 _gil_runtime_state 中的其他變量
  6. cond:是一個 condition variable, 和 mutex 結合起來一起使用, 當前線程釋放 gil 時用來給其他等待中的線程發送信號
  7. ** switch_cond and switch_mutex**

switch_cond 是另一個 condition variable, 和 switch_mutex 結合起來可以用來保證釋放后重新獲得 gil 的線程不是同一個前面釋放 gil 的線程, 避免 gil 切換時線程未切換浪費 cpu 時間

這個功能如果編譯時未定義 FORCE_SWITCHING 則不開啟

static void
drop_gil(struct _ceval_runtime_state *ceval, PyThreadState *tstate)
{
    ...

#ifdef FORCE_SWITCHING
    if (_Py_atomic_load_relaxed(&ceval->gil_drop_request) && tstate != NULL) {
        MUTEX_LOCK(gil->switch_mutex);
        /* Not switched yet => wait */
        if (((PyThreadState*)_Py_atomic_load_relaxed(&gil->last_holder)) == tstate)
        {   
            /* 如果 last_holder 是當前線程, 釋放 switch_mutex 這把互斥鎖, 等待 switch_cond 這個條件變量的信號 */
            RESET_GIL_DROP_REQUEST(ceval);
            /* NOTE: if COND_WAIT does not atomically start waiting when
               releasing the mutex, another thread can run through, take
               the GIL and drop it again, and reset the condition
               before we even had a chance to wait for it. */
            /* 注意, 如果 COND_WAIT 不在互斥鎖釋放后原子的啟動,
                另一個線程有可能會在這中間拿到 gil 並釋放,
            '並且重置這個條件變量, 這個過程發生在了 COND_WAIT 之前 */
            COND_WAIT(gil->switch_cond, gil->switch_mutex);
        }
        MUTEX_UNLOCK(gil->switch_mutex);
    }
#endif
}

4. gil在main_loop中的體現

//
main_loop:
for (;;) {
    /* 如果 gil_drop_request 被其他線程設置為 1 */
    /* 給其他線程一個獲得 gil 的機會 */
    if (_Py_atomic_load_relaxed(&ceval->gil_drop_request)) {
    /* Give another thread a chance */
    if (_PyThreadState_Swap(&runtime->gilstate, NULL) != tstate) {
        Py_FatalError("ceval: tstate mix-up");
    }
    drop_gil(ceval, tstate);

    /* Other threads may run now */

    take_gil(ceval, tstate);

    /* Check if we should make a quick exit. */
    exit_thread_if_finalizing(runtime, tstate);

    if (_PyThreadState_Swap(&runtime->gilstate, tstate) != NULL) {
        Py_FatalError("ceval: orphan tstate");
        }
    }
    /* Check for asynchronous exceptions. */
    /* 忽略 */
    fast_next_opcode:
    switch (opcode) {
        case TARGET(NOP): {
            FAST_DISPATCH();
        }
        /* 忽略 */
        case TARGET(UNARY_POSITIVE): {
            PyObject *value = TOP();
            PyObject *res = PyNumber_Positive(value);
            Py_DECREF(value);
            SET_TOP(res);
            if (res == NULL)
                goto error;
            DISPATCH();
        }
    	/* 忽略 */
    }
    /* 忽略 */
}

這個很大的 for loop 會按順序逐個的加載 opcode, 並委派給中間很大的 switch statement 去進行執行, switch statement 會根據不同的 opcode 跳轉到不同的位置執行

for loop在開始位置會檢查 gil_drop_request變量, 必要的時候會釋放 gil

不是所有的 opcode 執行之前都會檢查 gil_drop_request 的, 有一些 opcode 結束時的代碼為 FAST_DISPATCH(), 這部分 opcode 會直接跳轉到下一個 opcode 對應的代碼的部分進行執行

而另一些 DISPATCH() 結尾的作用和 continue 類似, 會跳轉到 for loop 頂端, 重新檢測 gil_drop_request, 必要時釋放 gil

5 如何解決GIL

GIL只會對CPU密集型的程序產生影響,規避GIL限制主要有兩種常用策略:一是使用多進程,二是使用C語言擴展,把計算密集型的任務轉移到C語言中,使其獨立於Python,在C代碼中釋放GIL。當然也可以使用其他語言編譯的解釋器如 JpythonPyPy

6.總結

  1. Python語言和GIL沒有半毛錢關係,僅僅是由於歷史原因在CPython解釋器中難以移除GIL
  2. GIL:全局解釋器鎖,每個線程在執行的過程都需要先獲取GIL,確保同一時刻僅有一個線程執行代碼,所以python的線程無法利用多核。
  3. 線程在I/O操作等可能引起阻塞的system call之前,可以暫時釋放GIL,執行完畢后重新獲取GIL,python3.2以後使用時間片來切換線程,時間閾值是0.005秒,而python3.2之前是使用opcode執行的數量(tick=100)來切換的。
  4. Python的多線程在多核CPU上,只對於IO密集型計算產生正面效果;而當有至少有一個CPU密集型線程存在,那麼多線程效率會由於GIL而大幅下降

參考

Cpython-gil講解-zpoint

Python的GIL是什麼鬼-盧鈞軼(cenalulu)

Youtube-Understanding the Python GIL

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※回頭車貨運收費標準

台中搬家公司費用怎麼算?