在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python怎樣存儲變量性能最優

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-30 15:33 ? 次閱讀

工作時我們經常會遇到需要臨時保存結果變量的場景,尤其是一些數據處理、模型開發的場景,加載處理速度是個很漫長的過程,于是經常會把這些變量儲存起來。

而儲存變量最常見、最普遍的方法是用pickle,保存為pkl文件。但是如果從寫入和讀取的性能角度考慮,pkl可能真的不是最優選。

Pickle有其獨特的好處,大部分變量不需要進行處理,都能直接存到pkl文件里,但這樣的方便其實是犧牲了部分性能取得的。與之相比,numpy的.npy格式就比pickle性能上快不少。

當然,我們需要有證據支撐這個觀點。所以今天我們就來做個實驗,分別在Python2和Python3中對比 numpy 和 pickle 兩種存儲格式(.npy, .pkl) 對數據的存儲和讀取的性能對比。

部分內容參考分析自: https://applenob.github.io/python/save/

1. Python2中, npy與pkl的性能對比

首先初始化數據:

import numpy as np
import time
import cPickle as pkl
import os

all_batches = []
for i in range(20):
    a1 = np.random.normal(size=[25600, 40])
    label = np.random.normal(size=[25600, 1])
    all_batch = np.concatenate([a1, label], 1)
    all_batches.append(all_batch)
all_batches = np.array(all_batches)
print(all_batches.shape)
# (20, 25600, 41)

然后測試使用pickle保存和讀取時間的耗時,以及整個文件的大小:

s_t1 = time.time()
pkl_name = "a.pkl"
with open(pkl_name, "wb") as f:
    pkl.dump(all_batches, f)
pkl_in_time = time.time() - s_t1
print("pkl dump costs {} sec".format(pkl_in_time))

s_t2 = time.time()
with open(pkl_name, "rb") as f:
    new_a = pkl.load(f)
pkl_out_time = time.time() - s_t2
print("pkl load costs {} sec".format(pkl_out_time))

pkl_size = os.path.getsize(pkl_name)
print("pkl file size: {} byte, {} mb".format(pkl_size, float(pkl_size)/(1024*1024)))

結果如下:

圖片

即:

pkl dump costs 67.7483091354 sec
pkl load costs 52.1168899536 sec
pkl file size: 497437110 byte, 474.392995834 mb

然后再試一下npy的寫入和讀取:

s_t3 = time.time()
npy_name = "a.npy"
with open(npy_name, "wb") as f:
    np.save(f, arr=all_batches)
npy_in_time = time.time() - s_t3
print("npy save costs {} sec".format(npy_in_time))
s_t4 = time.time()
with open(npy_name, "rb") as f:
    new_a = np.load(f)
npy_out_time = time.time() - s_t4
print("npy load costs {} sec".format(npy_out_time))
npy_size = os.path.getsize(npy_name)
print("npy file size: {} byte, {} mb".format(npy_size, float(npy_size) / (1024 * 1024)))

結果如下:

圖片

即:

npy save costs 20.718367815 sec
npy load costs 0.62314915657 sec
npy file size: 167936128 byte, 160.15637207 mb

結果發現,npy性能明顯優于pkl格式。

通過多次測試發現,在Python2中,npy格式的性能優勢全面碾壓pkl,工程允許的情況下,在Python2中,我們應該在這二者中毫不猶豫地選擇npy.

2.Python3中, npy與pkl的性能對比

Python2已經是過去式,重點還要看Python3.

在Python3中,與Python2的代碼唯一一句不一樣的是pickle的引入:

# Python2:
import cPickle as pkl

# Python3:
import pickle as pkl

其他代碼基本一樣,替換代碼后,重新運行程序,讓我們看看在Python3上,npy格式和pkl格式性能上的區別,首先是pkl格式的表現:

ckenddeMacBook-Pro:Documents ckend$ python 1.py
(20, 25600, 41)
pkl dump costs 24.32167887687683 sec
pkl load costs 4.480823040008545 sec
pkl file size: 167936163 byte, 160.15640544891357 mb

然后是npy格式的表現:

npy save costs 22.471696853637695 sec
npy load costs 0.3791017532348633 sec
npy file size: 167936080 byte, 160.1563262939453 mb

可以看到在Python3中pkl格式和npy格式的存儲大小是基本相同的,在存儲耗時上也相差無幾。但是在讀取數據的時候,npy相對于pkl還是有一定的優勢的。

因此,如果你的程序非常注重讀取效率,那么我覺得npy格式會比pkl格式更適合你。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 文件
    +關注

    關注

    1

    文章

    578

    瀏覽量

    25173
  • 數據處理
    +關注

    關注

    0

    文章

    626

    瀏覽量

    29010
  • 模型
    +關注

    關注

    1

    文章

    3479

    瀏覽量

    49934
  • python
    +關注

    關注

    56

    文章

    4823

    瀏覽量

    86083
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    python環境變量的配置pip

    開始,然后討論如何找到Python的安裝路徑以及如何配置環境變量。接下來,我們將詳細講解pip的用途和安裝方法,并解決一些與pip相關的常見問題。 一、環境變量的概念 環境變量是操作系
    的頭像 發表于 12-15 15:41 ?2926次閱讀

    怎樣才能使本本達到最優性能

    怎樣才能使本本達到最優性能 問題:我是一個最近購本的菜鳥,請問怎樣才能使本本達到最優性能? 回
    發表于 01-25 14:39 ?558次閱讀

    python環境變量設置

    安裝python之后,我們往往面臨這樣一個問題,在命令行輸入“python”,竟然出錯,難道是沒有安裝成功嗎?非也,其實是你的系統環境變量沒有設置好。今天,小編就來帶大家學學python
    發表于 11-20 11:47 ?2446次閱讀
    <b class='flag-5'>python</b>環境<b class='flag-5'>變量</b>設置

    Python的常量與變量基礎知識詳解

    Python是一門強類型的動態語言。 字面常量,變量沒有類型,變量只是在特定的時間指向特定的對象而已,變量所指向的對象是有類型的。 變量
    發表于 12-14 05:31 ?1912次閱讀

    python性能之服務優化的方法解析

    怎樣發揮Python語言的最高性能
    的頭像 發表于 12-31 01:04 ?3719次閱讀
    <b class='flag-5'>python</b><b class='flag-5'>性能</b>之服務優化的方法解析

    python設置環境變量

    我們想要運行python,需要安裝Python,還要設置一些環境變量1,此電腦,右鍵屬性2、高級系統設置-> 環境變量3、在系統變量中找到p
    發表于 11-10 14:49 ?965次閱讀

    Python私有變量的定義方法

    學過編程語言的人員,都知道私有變量在編程中必不可少,與Java和C語言用private關鍵字定義私有變量不同,Python是在變量前面加上雙橫杠(例如:__test)來標識,
    發表于 02-13 16:49 ?1756次閱讀

    Python變量類型詳細資料說明

    Python 中的變量賦值不需要類型聲明。每個變量在內存中創建,都包括變量的標識,名稱和數據這些信息。每個變量在使用前都必須賦值,
    發表于 08-24 16:47 ?3次下載
    <b class='flag-5'>Python</b>的<b class='flag-5'>變量</b>類型詳細資料說明

    深入了解python常量與變量

      Python變量和常量不需要事先聲明類型,這是根據Python的動態語言特性而來。
    的頭像 發表于 02-16 18:22 ?2116次閱讀
    深入了解<b class='flag-5'>python</b>常量與<b class='flag-5'>變量</b>

    python變量的作用域

    python變量的作用域 1. 作用域 Python的作用域可以分為四種: L (Local) 局部作用域 E (Enclosing) 閉包函數外的函數中 G (Global) 全局作用域 B
    的頭像 發表于 03-03 16:50 ?1780次閱讀

    Python-無處不在的變量

    Python中,每個變量在使用前都必須賦值,變量賦值以后,該變量才會被創建
    的頭像 發表于 02-16 14:51 ?776次閱讀

    淺析python變量類型

    python不需要事先聲明變量python變量類型是在運行過程中自動決定的,不需要代碼聲明類型。
    的頭像 發表于 03-10 10:11 ?949次閱讀
    淺析<b class='flag-5'>python</b>的<b class='flag-5'>變量</b>類型

    如何配置Python環境變量

    配置Python環境變量是在安裝Python解釋器后的一項重要步驟,它允許您在任何位置都可以通過命令行或腳本運行Python解釋器,使Python
    的頭像 發表于 04-14 12:16 ?2.1w次閱讀

    Python怎樣存儲變量性能最優

    ,保存為pkl文件。但是如果從寫入和讀取的性能角度考慮,pkl可能真的不是最優選。 Pickle有其獨特的好處,大部分變量不需要進行處理,都能直接存到pkl文件里,但這樣的方便其實是犧牲了部分
    的頭像 發表于 10-17 11:34 ?488次閱讀
    <b class='flag-5'>Python</b><b class='flag-5'>怎樣</b><b class='flag-5'>存儲</b><b class='flag-5'>變量</b><b class='flag-5'>性能</b><b class='flag-5'>最優</b>

    python變量命名規則

    Python是一種高級編程語言,廣泛應用于軟件開發、數據分析和科學計算等領域。在Python中,變量是用來存儲數據的容器,它們具有名稱以及與之關聯的值。然而,
    的頭像 發表于 11-23 15:44 ?2096次閱讀
    主站蜘蛛池模板: 狠狠色噜噜狠狠狠狠色综合久 | 刺激一区| 婷婷色激情 | 手机在线电影你懂的 | 日日操天天射 | 色婷婷综合在线视频最新 | 中文字幕一区视频 | 夜色资源站www国产在线观看 | 2017av在线 | 97久久人人 | 国产女人视频免费观看 | 中国美女毛片 | 一级特级女人18毛片免费视频 | 一级无毛片 | 视频一区二区在线观看 | 亚洲国产福利精品一区二区 | 国产亚洲3p一区二区三区 | 久久久噜噜噜久久久午夜 | 国产亚洲精品久久yy5099 | 99热在线获取最新地址 | 99亚洲自拍 | 午夜影视在线视频观看免费 | 在线观看免费精品国产 | 日日碰狠狠添天天爽五月婷 | 色噜噜狠狠色综合久 | 夜恋秀场欧美成人影院 | 欧洲天堂网 | 欧美福利二区 | 天天操天天插天天干 | 欧美午夜剧场 | 久久久夜 | 亚洲精品一卡2卡3卡三卡四卡 | 清冷双性被cao的合不拢腿 | 午夜精品免费 | 特黄特色的大片观看免费视频 | 最新午夜宅男 | 日本三级三级三级免费看 | 在线精品一区二区三区 | 黄色美女网站在线观看 | mmmxxx69日本 | 天天干天天爽天天操 |