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

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

開發 后端
在本文中,我想澄清一些關于Python的批評,并探討在使用Python進行數據工程、數據科學和分析學的日常工作中,我們是否有必要擔憂速度。

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)。

我是一名Python工程師,所以你可以認為我有偏見。在本文中,我想澄清一些關于Python的批評,并探討在使用Python進行數據工程、數據科學和分析學的日常工作中,我們是否有必要擔憂速度。

[[376425]]

Python速度很慢嗎?

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

但是對于所有用例來說,Python是否比其他(更難學習和使用的)語言慢得多?你若查看為解決特定問題而優化的許多Python庫的性能基準,就會發現它們與編譯語言相比,表現相當不錯。

例如,看看FastAPI的性能基準——顯然,Go作為一種編譯語言要比Python快得多。盡管如此,FastAPI在構建REST API方面還是勝過了一些Go的庫:

 

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

 

 

網絡框架基準(上面的列表不包括C++和Java web框架,它們的性能甚至更高。)

 

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

代碼速度與實用性

[[376426]]

圖源:unsplash

從實用的角度來看,在為日常工作選擇編程語言時,我們需要回答許多不同的問題。

(1) 你能用這種語言切實解決多個業務問題嗎?

假如你只關心速度,那就別用Python了。各種用例都有更快的替代方案。Python的主要優點在于它的可讀性、易用性,以及能用它解決廣泛問題。Python可以用作橋梁,將無數不同的)系統、服務和用例連接在一起。

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

Python非常容易學習和使用,所以其用戶數量在不斷增長。以前用Excel處理數字的商業用戶,現在可以很快學會用Pandas編碼,從而自給自足,無需始終依賴IT資源。同時,這消除了IT和分析部門的負擔,也縮短了實現價值的時間。

近些年,比起那些能用Java或Scala做同樣事情的人,你更容易找到那些了解Python并能用這種語言維護Spark數據處理應用程序的數據工程師。許多組織在很多用例中逐漸轉向使用Python,只是因為找到“會說”這種語言的員工的幾率更高。

我知道一些公司非常需要Java或C#開發人員來維護他們現有的應用程序,但這些語言很難(需要很多年才能掌握),而且對于新程序員來說似乎沒有吸引力,因為他們可以用更簡單的語言(如Go或Python)來獲得更多收入。

(3) 不同領域專家之間的協同效應

假如你的公司使用Python,那么商業用戶、數據分析師、數據科學家、數據工程師、后端和web開發人員、DevOps工程師,甚至系統管理員很可能都使用同一種語言。這會引起項目中的協同效應,來自不同領域的人可以一起工作。

數據處理中真正的瓶頸是什么?

在我的工作中,我通常遇到的瓶頸不是語言本身,而是外部資源,來看幾個例子。

(1) 寫入關系數據庫

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

事實上,我在AWS上使用多線程加速RDS Aurora數據庫的寫入操作的時候,這種情況就發生過一次了。我注意到寫入節點的CPU利用率非常高,以至于我不得不通過使用更少的線程來刻意降低代碼的速度,以確保不會破壞數據庫實例。

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

(2) 調用外部的API

使用外部REST API,你可能是想從中提取數據來滿足數據分析需求,這同樣證明了語言本身似乎不是瓶頸。雖然我們可以通過利用并行性來加速數據提取,但這可能是徒勞的,因為外部API限制了我們在特定時間段內可以發出的請求數量。因此,你可能會刻意讓腳本變慢,來確保不超出API的請求限制:

  1. time.sleep(10) 

(3) 使用大數據

從我處理大量數據集的經驗來看,無論使用哪種語言,都無法將真正的“大數據”加載到筆記本電腦的內存中。對于這樣的用例,你可能需要利用分布式處理框架,如Dask、Spark、Ray等。在使用單個服務器實例或筆記本電腦時,可以處理的數據量是有限制的。

如果你想把實際的數據處理工作轉移到一個計算節點集群中,可能使用GPU實例來進一步加快計算速度,Python剛好有一個龐大的框架生態系統,可以簡化這項任務:

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

如果你需要協調和監視在計算節點集群上發生的數據處理,有幾個用Python編寫的工作流管理平臺,可以加快數據管道的開發和維護,例如Apache Airflow、Prefect或Dagster。

有些抱怨Python的人,其實并沒有充分利用它,或者可能沒有使用適當的數據結構來解決眼前的問題。總而言之,如果你需要快速處理大量數據,那你可能需要更多的計算資源,而不是更快的編程語言,而且有一些Python庫可以輕松地將工作分布到數百個節點上。

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

圖源:Google

雖然Python比許多編譯語言慢,但它好用且非常多樣化。對許多人來說,語言的實用性勝過速度方面的考量。語言本身可能不是瓶頸,至少在數據工程中是這樣,瓶頸是外部系統和龐大數據量的限制,無論選擇哪種編程語言都無法在單個計算機上進行處理。

 

責任編輯:趙寧寧 來源: 讀芯術
相關推薦

2010-01-08 12:11:04

ibmdwWeb

2016-12-16 09:37:33

Linux實用性 行動

2013-05-30 09:19:31

災難恢復故障排查運維

2023-12-20 07:52:49

Python高級用法生成器

2011-05-31 18:41:45

復印機技巧

2011-11-02 17:30:36

HTML 5

2020-12-24 06:00:27

Python編程語言開發

2011-05-03 13:20:39

照片打印機

2017-08-12 13:36:15

虛擬化災難恢復服務器

2024-02-04 00:00:00

Go貨幣接口

2021-07-19 10:13:41

Figma插件工具

2023-11-28 15:19:00

Linux運維btop命令

2022-08-09 07:08:28

函數式編程Go

2012-06-28 11:31:32

中晶掃描儀

2023-10-12 09:52:13

Bard聊天機器人

2018-06-13 15:28:26

筆記本觸控功能

2021-08-18 15:23:42

SDNSD-WAN軟件定義網絡

2017-11-14 19:17:00

CIO教育智慧校園

2010-04-22 17:36:51

Oracle數據庫

2014-09-25 01:31:22

辦公設備智能硬件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人免费大片黄在线播放 | 中文字幕一区二区三区日韩精品 | 日本成年免费网站 | аⅴ资源新版在线天堂 | 国产九九精品视频 | 91偷拍精品一区二区三区 | 日韩精品中文字幕在线 | 欧美日韩亚洲视频 | 亚洲综合中文字幕在线观看 | 久久最新精品视频 | 久久91精品国产 | 欧美精品一二三 | 国产在线网站 | 成人在线一区二区三区 | 日韩欧美一级 | 九九精品网 | 国产精品久久亚洲7777 | 嫩草视频在线免费观看 | 久久久久国产一区二区三区 | 91pron在线| 日韩一二区 | 亚洲免费一区二区 | 国产精品大片在线观看 | 99精品一区二区 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 精品不卡 | 免费黄色录像视频 | 日本免费一区二区三区四区 | 天啪| 人人干人人玩 | 国产精品高 | 亚洲视频一区在线 | 成年人网站在线观看视频 | 精品国产免费一区二区三区五区 | 日本二区在线观看 | 日本三级全黄三级三级三级口周 | 电影午夜精品一区二区三区 | 欧美视频二区 | 国产激情视频在线观看 | 成人免费视频网站在线观看 | 亚洲视频免费 |