成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

速度or實(shí)用性:Python真的遇到瓶頸了嗎?

開發(fā) 后端
在本文中,我想澄清一些關(guān)于Python的批評(píng),并探討在使用Python進(jìn)行數(shù)據(jù)工程、數(shù)據(jù)科學(xué)和分析學(xué)的日常工作中,我們是否有必要擔(dān)憂速度。

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。

我是一名Python工程師,所以你可以認(rèn)為我有偏見。在本文中,我想澄清一些關(guān)于Python的批評(píng),并探討在使用Python進(jìn)行數(shù)據(jù)工程、數(shù)據(jù)科學(xué)和分析學(xué)的日常工作中,我們是否有必要擔(dān)憂速度。

[[376425]]

Python速度很慢嗎?

在我看來(lái),這類問(wèn)題應(yīng)該基于特定的情境和用例提出。與編譯語(yǔ)言(如C語(yǔ)言)相比,Python處理數(shù)字的速度慢嗎?是的,慢。這是眾所周知的事實(shí),這就是為什么Python庫(kù)在后臺(tái)控制著C語(yǔ)言,而在諸如numpy的Python庫(kù)中,速度起著重要作用。

但是對(duì)于所有用例來(lái)說(shuō),Python是否比其他(更難學(xué)習(xí)和使用的)語(yǔ)言慢得多?你若查看為解決特定問(wèn)題而優(yōu)化的許多Python庫(kù)的性能基準(zhǔn),就會(huì)發(fā)現(xiàn)它們與編譯語(yǔ)言相比,表現(xiàn)相當(dāng)不錯(cuò)。

例如,看看FastAPI的性能基準(zhǔn)——顯然,Go作為一種編譯語(yǔ)言要比Python快得多。盡管如此,F(xiàn)astAPI在構(gòu)建REST API方面還是勝過(guò)了一些Go的庫(kù):

 

速度or實(shí)用性:Python真的遇到瓶頸了嗎?

 

 

網(wǎng)絡(luò)框架基準(zhǔn)(上面的列表不包括C++和Java web框架,它們的性能甚至更高。)

 

我們應(yīng)該捫心自問(wèn)的是,我真正需要的速度是多少。如果運(yùn)行每天只觸發(fā)一次的ETL作業(yè),你可能并不關(guān)心它需要20秒還是200秒。你可能更傾向于使代碼易于理解、封裝和維護(hù),特別是考慮到與昂貴的工程時(shí)間相比,計(jì)算資源正變得越來(lái)越便宜。

代碼速度與實(shí)用性

[[376426]]

圖源:unsplash

從實(shí)用的角度來(lái)看,在為日常工作選擇編程語(yǔ)言時(shí),我們需要回答許多不同的問(wèn)題。

(1) 你能用這種語(yǔ)言切實(shí)解決多個(gè)業(yè)務(wù)問(wèn)題嗎?

假如你只關(guān)心速度,那就別用Python了。各種用例都有更快的替代方案。Python的主要優(yōu)點(diǎn)在于它的可讀性、易用性,以及能用它解決廣泛?jiǎn)栴}。Python可以用作橋梁,將無(wú)數(shù)不同的)系統(tǒng)、服務(wù)和用例連接在一起。

(2) 你能找到足夠多的懂這門語(yǔ)言的員工嗎?

Python非常容易學(xué)習(xí)和使用,所以其用戶數(shù)量在不斷增長(zhǎng)。以前用Excel處理數(shù)字的商業(yè)用戶,現(xiàn)在可以很快學(xué)會(huì)用Pandas編碼,從而自給自足,無(wú)需始終依賴IT資源。同時(shí),這消除了IT和分析部門的負(fù)擔(dān),也縮短了實(shí)現(xiàn)價(jià)值的時(shí)間。

近些年,比起那些能用Java或Scala做同樣事情的人,你更容易找到那些了解Python并能用這種語(yǔ)言維護(hù)Spark數(shù)據(jù)處理應(yīng)用程序的數(shù)據(jù)工程師。許多組織在很多用例中逐漸轉(zhuǎn)向使用Python,只是因?yàn)檎业?ldquo;會(huì)說(shuō)”這種語(yǔ)言的員工的幾率更高。

我知道一些公司非常需要Java或C#開發(fā)人員來(lái)維護(hù)他們現(xiàn)有的應(yīng)用程序,但這些語(yǔ)言很難(需要很多年才能掌握),而且對(duì)于新程序員來(lái)說(shuō)似乎沒(méi)有吸引力,因?yàn)樗麄兛梢杂酶?jiǎn)單的語(yǔ)言(如Go或Python)來(lái)獲得更多收入。

(3) 不同領(lǐng)域?qū)<抑g的協(xié)同效應(yīng)

假如你的公司使用Python,那么商業(yè)用戶、數(shù)據(jù)分析師、數(shù)據(jù)科學(xué)家、數(shù)據(jù)工程師、后端和web開發(fā)人員、DevOps工程師,甚至系統(tǒng)管理員很可能都使用同一種語(yǔ)言。這會(huì)引起項(xiàng)目中的協(xié)同效應(yīng),來(lái)自不同領(lǐng)域的人可以一起工作。

數(shù)據(jù)處理中真正的瓶頸是什么?

在我的工作中,我通常遇到的瓶頸不是語(yǔ)言本身,而是外部資源,來(lái)看幾個(gè)例子。

(1) 寫入關(guān)系數(shù)據(jù)庫(kù)

在以ETL方式處理數(shù)據(jù)時(shí),最終需要將此數(shù)據(jù)加載到某個(gè)集中位置。盡管可以利用Python中的多線程功能,將數(shù)據(jù)更快地寫入某些關(guān)系數(shù)據(jù)庫(kù)中(通過(guò)使用更多線程),但并行寫入操作次數(shù)的增加可能會(huì)使數(shù)據(jù)庫(kù)的CPU容量使用最大化。

事實(shí)上,我在AWS上使用多線程加速RDS Aurora數(shù)據(jù)庫(kù)的寫入操作的時(shí)候,這種情況就發(fā)生過(guò)一次了。我注意到寫入節(jié)點(diǎn)的CPU利用率非常高,以至于我不得不通過(guò)使用更少的線程來(lái)刻意降低代碼的速度,以確保不會(huì)破壞數(shù)據(jù)庫(kù)實(shí)例。

這意味著Python具有并行化并加快許多操作的機(jī)制,但關(guān)系數(shù)據(jù)庫(kù)(受CPU核數(shù)量的限制)有其局限性,僅通過(guò)使用更快的編程語(yǔ)言不太可能解決這個(gè)問(wèn)題。

(2) 調(diào)用外部的API

使用外部REST API,你可能是想從中提取數(shù)據(jù)來(lái)滿足數(shù)據(jù)分析需求,這同樣證明了語(yǔ)言本身似乎不是瓶頸。雖然我們可以通過(guò)利用并行性來(lái)加速數(shù)據(jù)提取,但這可能是徒勞的,因?yàn)橥獠緼PI限制了我們?cè)谔囟〞r(shí)間段內(nèi)可以發(fā)出的請(qǐng)求數(shù)量。因此,你可能會(huì)刻意讓腳本變慢,來(lái)確保不超出API的請(qǐng)求限制:

  1. time.sleep(10) 

(3) 使用大數(shù)據(jù)

從我處理大量數(shù)據(jù)集的經(jīng)驗(yàn)來(lái)看,無(wú)論使用哪種語(yǔ)言,都無(wú)法將真正的“大數(shù)據(jù)”加載到筆記本電腦的內(nèi)存中。對(duì)于這樣的用例,你可能需要利用分布式處理框架,如Dask、Spark、Ray等。在使用單個(gè)服務(wù)器實(shí)例或筆記本電腦時(shí),可以處理的數(shù)據(jù)量是有限制的。

如果你想把實(shí)際的數(shù)據(jù)處理工作轉(zhuǎn)移到一個(gè)計(jì)算節(jié)點(diǎn)集群中,可能使用GPU實(shí)例來(lái)進(jìn)一步加快計(jì)算速度,Python剛好有一個(gè)龐大的框架生態(tài)系統(tǒng),可以簡(jiǎn)化這項(xiàng)任務(wù):

  • 你想通過(guò)利用GPU來(lái)加快數(shù)據(jù)科學(xué)的計(jì)算速度嗎?使用Pytorch、Tensorflow、Ray或Rapids吧。
  • 你想加快處理大數(shù)據(jù)的Python代碼的速度嗎?使用Spark(或Databricks)、Dask或Prefect吧(可在后臺(tái)將Dask抽象化)。
  • 你想加快用以分析的數(shù)據(jù)處理速度嗎?使用快速專用的內(nèi)存列數(shù)據(jù)庫(kù),通過(guò)SQL查詢確保高速處理。

如果你需要協(xié)調(diào)和監(jiān)視在計(jì)算節(jié)點(diǎn)集群上發(fā)生的數(shù)據(jù)處理,有幾個(gè)用Python編寫的工作流管理平臺(tái),可以加快數(shù)據(jù)管道的開發(fā)和維護(hù),例如Apache Airflow、Prefect或Dagster。

有些抱怨Python的人,其實(shí)并沒(méi)有充分利用它,或者可能沒(méi)有使用適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)來(lái)解決眼前的問(wèn)題。總而言之,如果你需要快速處理大量數(shù)據(jù),那你可能需要更多的計(jì)算資源,而不是更快的編程語(yǔ)言,而且有一些Python庫(kù)可以輕松地將工作分布到數(shù)百個(gè)節(jié)點(diǎn)上。

速度or實(shí)用性:Python真的遇到瓶頸了嗎?

圖源:Google

雖然Python比許多編譯語(yǔ)言慢,但它好用且非常多樣化。對(duì)許多人來(lái)說(shuō),語(yǔ)言的實(shí)用性勝過(guò)速度方面的考量。語(yǔ)言本身可能不是瓶頸,至少在數(shù)據(jù)工程中是這樣,瓶頸是外部系統(tǒng)和龐大數(shù)據(jù)量的限制,無(wú)論選擇哪種編程語(yǔ)言都無(wú)法在單個(gè)計(jì)算機(jī)上進(jìn)行處理。

 

責(zé)任編輯:趙寧寧 來(lái)源: 讀芯術(shù)
相關(guān)推薦

2010-01-08 12:11:04

ibmdwWeb

2016-12-16 09:37:33

Linux實(shí)用性 行動(dòng)

2013-05-30 09:19:31

災(zāi)難恢復(fù)故障排查運(yùn)維

2023-12-20 07:52:49

Python高級(jí)用法生成器

2011-05-31 18:41:45

復(fù)印機(jī)技巧

2011-11-02 17:30:36

HTML 5

2020-12-24 06:00:27

Python編程語(yǔ)言開發(fā)

2017-08-12 13:36:15

虛擬化災(zāi)難恢復(fù)服務(wù)器

2011-05-03 13:20:39

照片打印機(jī)

2024-02-04 00:00:00

Go貨幣接口

2022-08-09 07:08:28

函數(shù)式編程Go

2021-07-19 10:13:41

Figma插件工具

2023-11-28 15:19:00

Linux運(yùn)維btop命令

2018-06-13 15:28:26

筆記本觸控功能

2023-10-12 09:52:13

Bard聊天機(jī)器人

2012-06-28 11:31:32

中晶掃描儀

2021-08-18 15:23:42

SDNSD-WAN軟件定義網(wǎng)絡(luò)

2010-04-22 17:36:51

Oracle數(shù)據(jù)庫(kù)

2017-11-14 19:17:00

CIO教育智慧校園

2014-09-25 01:31:22

辦公設(shè)備智能硬件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文一区二区视频 | 9191成人精品久久 | 免费观看一级视频 | 亚洲va欧美va天堂v国产综合 | 国产亚洲成av人在线观看导航 | 日本小视频网站 | 国产精品久久久久久久久久久久久久 | 干干干操操操 | 亚洲少妇综合网 | 久久久91精品国产一区二区三区 | 欧美一区二区三区小说 | 激情综合五月 | 日本精品国产 | 成人精品视频99在线观看免费 | 91久久久久久久久 | 黄色综合| 国产欧美日韩在线播放 | 看一级黄色毛片 | 国产专区视频 | 成人免费精品 | 日韩精品久久一区 | 精品国产欧美在线 | 伊人一区 | 一区二区高清 | 一区视频 | 欧美亚洲视频在线观看 | 9191av| 欧美一区二区三区在线视频 | 黄色骚片 | 精品动漫一区 | 亚洲精品一区二区三区中文字幕 | 久久在线| 黄色免费网址大全 | 成人欧美一区二区三区在线播放 | 亚洲精品日日夜夜 | 免费一级欧美在线观看视频 | 国产精品一二区 | 全免费a级毛片免费看视频免费下 | 依人成人| 日韩免费看片 | 免费欧美 |