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

一文看懂,為什么 Python 運行速度如此慢?

開發 前端
在這篇文章中,我將介紹Python的不同特性,我們將了解為什么這使其成為當今最完整的語言之一,但速度不夠快。

在編程社區中,眾所周知Python編程語言在速度方面并不占優勢。

"但是就是慢..."

在這篇文章中,我將介紹Python的不同特性,我們將了解為什么這使其成為當今最完整的語言之一,但速度不夠快。但首先,讓我們掌握一些關于編程語言的基本知識。

抽象級別

正如我們可能知道的那樣,編程語言通常根據其抽象級別進行描述。

  • 低抽象級別表明該語言更接近硬件(難以解釋)
  • 高級別表示代碼更接近用戶(易于解釋)。

抽象級別(從硬件到現代編程語言)

C++、PHP、Java、Python等都被認為是現代(或高級)編程語言,因為它們可以在幾乎任何類型的系統上運行。在匯編語言中,我們必須根據每個特定處理器的指令編寫不同的程序(無法在不同的CPU上運行相同的代碼)。例如,如果我們創建一個打印“Hello world”的程序并將代碼發送給我們的朋友(他有不同的計算機型號),當他嘗試執行它時,它可能會失敗。

現代語言:金字塔的最后抽象層

現代語言抽象

盡管是離機器碼最高的抽象,但在金字塔的最后一層也有層次結構。一方面,我們可以找到過程化語言,如C,我們需要逐步知道自己在做什么。這具有非常高效的優點,但缺點是復雜且不夠靈活。另一方面,其他語言通過讓我們使用更易讀和靈活的代碼來簡化任務。這就是Python的情況。我們幾乎可以用它做任何事情,而且易于實現,但在某些任務上效率不高。

但為什么Python確切地說是“慢”呢?

讓我們回顧一些語言特性以回答這個問題。

解釋性語言

首先,Python是一種解釋性語言,這意味著代碼由軟件程序(稱為解釋器)逐行讀取和執行,在運行時進行。這是將代碼轉換為機器代碼的一種方式。

編譯型語言

另一種使代碼“為機器可理解”的方式是通過編譯過程。在這種情況下,源代碼在實際在計算機上運行之前通過編譯器轉換為機器代碼。

編譯型與解釋型語言

為什么解釋性方式更慢?

在解釋性語言中,源代碼的每一行在執行過程中都會即時轉換為機器代碼。這意味著每次程序運行時,解釋器必須解析、分析和執行代碼,這增加了與直接運行預編譯機器代碼相比的開銷。例如:如果某段代碼運行多次(例如,在循環內),解釋器必須每次遇到時讀取和轉換它。相反,編譯程序將直接運行機器代碼,無需在通過循環時重新翻譯它。

CPython及其全局解釋器鎖(GIL)

標準的Python解釋器是CPython。它由C和Python編寫,將Python代碼編譯成字節碼,然后進行解釋。為了防止多個本機線程同時執行Python字節碼,CPython使用全局解釋器鎖。這個鎖是必要的,因為CPython的內存管理不是線程安全的。然而,在多線程程序中,它可能是一個顯著的瓶頸,限制了在多核處理器上進行多線程的性能提升。

全局解釋器鎖的工作流程

動態類型

此外,Python是動態類型的,這意味著在初始化變量時不需要聲明變量的類型。這對效率有何影響呢?嗯,在動態類型語言中,類型是在運行時確定的。這意味著解釋器需要在執行代碼片段時進行類型檢查。這需要額外的處理來確定每個變量的類型以及根據這些類型執行操作的方式。而動態類型語言的對立面是什么?

靜態類型語言

在這種情況下,變量的類型在編譯時而不是在運行時確定。因此,類型在編譯時已知,編譯器可以更激進地優化代碼執行。這導致更快但不夠靈活的程序。一些采用這種方法的語言包括C++和Rust。

靜態類型與動態類型語言

垃圾收集

垃圾收集是一種編程語言運行時系統用于回收程序不再使用的內存的自動內存管理形式。Python通過垃圾收集自動管理其對象的內存分配和釋放。它使用的主要垃圾收集方法是引用計數。Python中的每個對象都有一個引用計數,即指向它的引用數量。當引用計數降至零,即不再有指向該對象的引用時,它會立即從內存中刪除。

垃圾收集器的工作流程

然而,垃圾收集是一把雙刃劍...

它通過自動清理未使用的對象極大簡化了內存管理,有助于防止由于手動內存管理導致的內存泄漏和其他錯誤。但它引入了開銷和不可預測性,可能影響應用程序的性能。

責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2018-08-02 16:17:34

Python 開發編程語言

2022-09-23 15:07:32

東數西算數據中心IT

2020-03-31 14:40:24

HashMap源碼Java

2021-02-21 11:25:17

云計算IaaSPaaS

2019-05-22 09:50:42

Python沙箱逃逸網絡攻擊

2021-02-08 22:23:16

云計算辦公硬件

2022-03-29 08:02:01

數字孿生能源程序

2020-06-24 09:55:55

邊緣計算開發數據中心

2016-08-18 00:21:12

網絡爬蟲抓取網絡

2024-08-12 12:30:27

2025-01-20 09:15:00

iOS 18.3蘋果iOS 18

2021-08-02 06:56:19

TypeScript編程語言編譯器

2021-07-06 08:59:38

頁緩存PageCache

2019-07-01 09:22:15

Linux操作系統硬件

2021-06-23 16:05:05

鴻蒙HarmonyOS應用

2025-03-25 09:06:11

2021-05-11 10:40:29

JUCAQSJava

2021-05-12 15:16:17

JUCAQSJava

2022-04-26 13:41:16

區塊鏈比特幣數據庫

2024-10-10 17:55:57

LinuxACL訪問控制列表
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久亚洲一区 | 久久精品伊人 | 最新日韩在线 | 日本午夜网站 | 狠狠狠干 | 天天干天天草 | 国产精品久久久久久久久久久久久 | 成人性视频在线播放 | 欧美jizzhd精品欧美巨大免费 | 99久久久无码国产精品 | 国产激情一区二区三区 | 色婷婷精品久久二区二区蜜臂av | 91精品在线播放 | 国产精产国品一二三产区视频 | 国产精品久久久久久久久图文区 | 91精品国模一区二区三区 | 在线看一区二区 | 在线成人 | 欧美日韩在线一区二区 | 精品亚洲一区二区三区四区五区 | 日本一二三区电影 | 亚洲区一区二 | 国产精品久久久久久亚洲调教 | 欧美视频1| 亚洲一区影院 | 国产精品久久国产精品久久 | 99久久99 | 国产成人精品免高潮在线观看 | 日韩视频一区二区 | 色婷婷激情 | 综合国产| 91视频正在播放 | 久久亚洲春色中文字幕久久久 | 一级一级一级毛片 | 少妇性l交大片免费一 | 亚洲欧美精品国产一级在线 | 国产精品一区二区久久 | 亚洲区一区二区 | 欧美成人免费 | 中文字幕成人在线 | 波多野结衣av中文字幕 |