1. 程式人生 > >從後臺看python--為什麼說python是慢的

從後臺看python--為什麼說python是慢的

python越來越作為一種科學技術研究的語言越來越流行,可是我們經常聽到一個問題,python是慢的。那麼我們從後臺分析一下,為什麼python是慢的。
python是一種動態型別,解釋型語言,它的值都是儲存在分散的物件中,而不是緊密的快取之中。

1.python是動態型別語言

這意味著編譯器在程式執行之前並不知道變數定義的型別。C定義變數和Python定義變數的方式的區別:
對於C,編譯器通過定義知道變數的型別;然而對於python中的變數,當你知道變數的型別的時候已經是程式執行的時候了。
我們分析一小段程式碼分別在python和C中執行的具體區別:
在C中,如果你寫如下程式碼:

int a = 1;
int b = 2;
int c = a + b;

1.分配一個型別1給a
2.分配一個型別2給b
3.呼叫一個二進位制加法

a = 1
b = 2
c = a + b

1.分配1給a

  • 設定一個物件,然後將它的型別設定為整數
  • 將它的值設為1
    2.分配2給b

  • 設定一個物件,然後將它的型別設定為整數

  • 將它的值設為2
    3.呼叫一個二進位制加法(a,b)

  • 尋找一個型別在物件中

  • a是一個整數,它的值是a
  • 尋找一個型別在物件中
  • b是一個整數,它的值是b
  • 呼叫一個二進位制加法
  • 返回結果,結果是一個整數
    4.產生一個物件c

  • 將一個物件的型別設定為整數

  • 將它的值分配給結果
    動態型別意味著每一步操作需要更多的步驟。python比c慢的一個基本的原因就是數字計算上面的操作。

2.python是一種解釋型的語言而不是編譯型的

我們可以看到解釋型語言和編譯型語言的區別。一個聰明的編譯器知道怎麼提前優化,避免重複和不必要的操作,從而提高效率。當然,在這一點上也是仁者見仁智者見智。

3.python的物件模型導致儲存效率低下

python儲存資料效率低下的原因,主要可以從下圖看出:
這裡寫圖片描述

當然說了python這麼多缺點,為什麼python用的人還這麼多,因為它很簡單啊。python用起來的確很簡單,就我個人的使用感受而言,除了matlab,我沒有看過比python還要簡單的語言了。而且python的開源的庫很多,所以做很多東西都很方便。

相關推薦

後臺python--為什麼說python

python越來越作為一種科學技術研究的語言越來越流行,可是我們經常聽到一個問題,python是慢的。那麼我們從後臺分析一下,為什麼python是慢的。 python是一種動態型別,解釋型語言,它的值都是儲存在分散的物件中,而不是緊密的快取之中。 1.p

pyhPython的工廠模式

【設想】 在做selenium前端頁面測試時,想到生成html報告,需要編寫個類,實現在Python內編輯html,具體思路如下: 1、編寫各種tag型別,如head、title、body; 2、過載 + 運算,實現類似html + head的功能; 【PyH工廠模式解析

零基礎學習python

fix pytho 零基礎 基礎 tar install 基礎學習 默認 prefix wget http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz tar -zxvf Python-2.7.8.tgz cd Py

[Python接口自動化]零開始學習python自動化(1):環境搭建

help ins cnblogs 文件中 ssi 空格 plugins 變量 mod 第一步:安裝python編譯環境 安裝python編譯環境之前,必須保證已安裝jdk哈,如果為安裝,請參考https://jingyan.baidu.com/article/6dad507

python小白到底要哪裏入手python呢?

python 爬蟲 運維 人工只能1、選擇Python版本 對於Python工程師來說,Python的版本則是你們的工作環境。所以在學習之前一定要考慮選擇一個合適自己的版本,Python3對零基礎的小白很友好,易上手。選好版本後就可以開始學習了。 2、學習Python基礎知識 Python 是一個有條理的、

零玩轉python+人工智能-3》120,122節課深度優先疑問解答

反向 人工智能 人工智 繼承 父類 原則 隊列 並不是 理解 深度優先(從左往右); 按照這個原則來;至於使用棧,或者隊列;根據它們不同的特性;最終務必保證最終結果是原繼承結構的“從左往右”;所以,如果是棧,就是右側先入棧,左側再入(這樣左側能先出來,遵循從左到右的原則;

如何查安裝python和numpy的版本

版本 tab OS 搜索 lec dst python版本 命令 static 命令行下查看python和numpy的版本和安裝位置 1、查看python版本 方法一: python -V 註意:‘-V‘中‘V’為大寫

零開始的 Python 爬蟲速成指南

Python序本文主要內容:以最短的時間寫一個最簡單的爬蟲,可以抓取論壇的帖子標題和帖子內容。本文受眾:沒寫過爬蟲的萌新。入門0.準備工作需要準備的東西: Python、scrapy、一個IDE或者隨便什麽文本編輯工具。1.技術部已經研究決定了,你來寫爬蟲。隨便建一個工作目錄,然後用命令行建立一個工程,工程名

大四學長手把手教我們零開始利用Python開發微信公眾號!已學會

基礎配置 微信公眾 快遞 技術分享 工作 信息 怎麽 test 實現 在一般的使用中,我們可以通過設置關鍵字實現一些基本的自動回復功能,但是這樣的關鍵字回復遠遠不能滿足我們的實際需求,比如我們要實現一個查快遞的功能,必然是要通過調用快遞接口對不同用戶的不同輸

Linux後臺運行python程序並輸出到日誌文件

出錯 python select 全部 pan 提示 -c 程序 後臺 後臺運行python程序並標準輸出到文件 現在有test.py程序要後臺部署, 裏面有輸出內容 使用命令: nohup python -u test.py > test.log 2>&am

0開始使用python flask編寫博客網站(2)

primary table 分享 init code migrate 一個 文件中 gist 好了上一篇文章中搭建好了完整的框架,以及可以訪問一個“hello world”頁面了。現在繼續完善我們的博客程序。 1.如法炮制,繼續完善error和admin的路由。 首先寫把4

0開始使用python flask編寫部落格網站(2)

好了上一篇文章中搭建好了完整的框架,以及可以訪問一個“hello world”頁面了。現在繼續完善我們的部落格程式。 1.如法炮製,繼續完善error和admin的路由。 首先寫把404和500的網頁寫好放到templates/errors中。然後在error的資料夾中新建handlers.py 檔案,在

零開始的Python學習Episode 13——常用模組

模組   一、time模組 時間戳(timestamp) :時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。 元組(struct_time)   :struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天,夏令時

零開始的Python學習Episode 15——正則表示式

正則表示式   正則表示式(或 RE)是一種小型的、高度專業化的程式語言,(在Python中)它內嵌在Python中,並通過 re 模組實現,所以使用時要匯入re模組。正則表示式模式被編譯成一系列的位元組碼,然後由用 C 編寫的匹配引擎執行。   先說幾個元字元 &nbs

一文Python的面向物件程式設計,這是真正的一篇非常棒的教程!

  之前在網路上看了很多關於面向物件的程式設計詳解,還是不夠過癮,所以決定自己動手寫一篇。 面向物件:Object Oriented Programming,簡稱OOP,即面向物件程式設計。           &nbs

零開始的Python爬蟲速成指南,本文受眾:沒寫過爬蟲的萌新

  引言 用最短的時間寫一個最簡單的爬蟲,可以抓一些簡單的論壇、帖子、網頁。 入門 1.準備工作 安裝Python 安裝scrapy框架 一個IDE或者可以用自帶的 2.開始寫爬蟲   &n

Python新書推薦《零開始學Python--資料分析與挖掘》

經過10多個月的努力,《從零開始學Python--資料分析與挖掘》的新書上市啦,在此感謝清華大學出版社對本書提出的寶貴建議,也感謝廣大網友及粉絲對我的期待。本書一共包含16章的內容,涉及四大模組,分別是Python基礎儲備、Python資料運算與整理、Python資料視覺化和Python資料探勘理論

零開始學Python【2】--數值計算及正則表示式

往期回顧: 從零開始學Python【1】--資料型別及結構 我們接著上一期的Python,繼續跟大家分享有關Python中常用的數值計算和正則表示式。 運算子 1)數值運算 +、-、*、/ % (求餘數) // (注意Python中的整除是

零開始學Python【1】--資料型別及結構

一直想靜下心來、花點時間學習Python3這門火爆的高階語言,但總是事與願違,故只能擠點時間,做到每天進步一點點。從今天開始我把積累的點滴知識與大家做個分享,也歡迎感興趣的朋友指教與提議。 首先從Python的基礎資料型別和資料結構說起,資料型別主要包含三種,分別是數值型、字元型和日

0開始使用python flask編寫部落格網站(1)

在學完flask教程時候,總是會遇到難以自己寫專案的問題。在第一次看狗書的時候,作者從單檔案馬上就到了多檔案的專案組織,當時也是仔細看,慢慢打程式碼才漸漸的明白了flask的專案組織方法,當明白了又感覺很簡單。。使用中多思考多打程式碼才能日有所得,願你我共同成長、 1. 編寫專案骨架 一個部落格網站需