導航:首頁 > 編程語言 > python如何獲取圖片所佔內存

python如何獲取圖片所佔內存

發布時間:2023-01-06 03:42:16

① 使用 sys.getsizeof 查看 python 對象的內存佔用

使用 sys.getsizeof 方法可以查看 python 對象的內存佔用,單位:位元組 (byte)
實際上是調用了 __sizeof__ 方法:

有些派喚數據類型告羨談在 Python3 和 Python2 中佔用的內存是不同的,例如 range :

關於這個值是怎麼算出來的,有待研究~
暫時已知:這個值包括該對象的數值、簽名(包括數據類型、參數、調用方式等)等一系列數據所佔總內存。可變對象所佔內存可能極小,因為對象是襪碰指針,指向很大的數據。

② 一張圖片所佔內存是如何計算的

Bitmap.Config 表示圖片像素類型,包括ALPHA_8、RGB_565、ARGB_4444、ARGB_8888
其中 A表示透明度;RGB分別是Red、Green、Blue,三種原色

1.在不考慮屏幕解析度和res文件夾解析度的情況下:

一張圖片(BitMap)佔用的內存=長 * 寬 * 每個像素點的大小

例如:一張圖片寬1080 ,高 452
那麼,這張圖片的大小按照這個公式應該是:1080 * 452 * 4B = 1952640B ≈ 1.86MB

2.考慮屏幕解析度和res文件夾解析度的情況下:
系統在載入 res 目錄下的資源圖片時,會根據圖片存放的不同目錄做一次解析度的轉換。

新長 = 原長 * (設備的 dpi / 目錄對應的 dpi )
新寬 = 原寬 * (設備的 dpi / 目錄對應的 dpi )

一張圖片(BitMap)佔用的內存= 新長 * 新寬 * 每個像素點的大小

③ 如何釋放Python佔用的內存

1.充分利用內存
任何一種圖像處理軟體對內存的要求都很高,Photoshop也一樣。如果你在使用Photoshop時,沒有使用其它的一些大軟體,這時你就可以將Photoshop佔用內存資源的比例提高。方法是:進行Photoshop,選擇菜單下File\Preference\Memory & Image Cache命令,將Used by Photoshop的比例提高到80%~90%即可。
2.指定虛擬內存
在處理Photoshop時,內存被用完是很正常的,到時會大大影響Photoshop處理圖像的時間,哪將怎麼解決呢?方法是:你可以用硬碟來作為內存來使用,也就是常說的虛擬內存。請選擇菜單下「File\Preference\Plug-Ins & Scratch Disks」命令。在這里的Scratch Disks下,你可以在硬碟上指定四個驅動器來作為虛擬內存,軟體默認的虛擬內存是在Windows\temp之下。當第一個虛擬內存被使用光之後,Photoshop會自動去使用第二個Scratch Dsik,這樣就提高了執行速度。
3.釋放內存與硬碟空間
在進行圖像處理時,你所進行的所有操作將會記錄在Photoshop的History(歷史記錄)工作板中。這些操作包括:復制到Clipboard(粘貼板)、Undo(恢復)、Pattern(填充物)、Histories(記錄)等幾種,選擇菜單下「Edit\Purge」命令。
進行這些操作之後,Photoshop會將這些圖像和數據保存在內存里,使用該命令後,即將這些被佔用的內存空間釋放出來(RAM:Oh! Freeden)這樣就讓Photoshop有更多的Resource(資源)可用,自然就提高了效率。但注意,如果這些操作佔用的內存比較少時,就沒有必要使用啦!
除此之外,在處理大型圖片時,Photoshop會自動產生一些臨時文件,一般都很大,如果你處理的是一個20MB大小的宣傳畫時,那麼臨時文件可能就是100~150MB。請在Windows\temp或在你設定虛擬內存的驅動器里,將產生的Photoshop臨時文件*.tmp刪除掉。

④ 7種檢測Python程序運行時間、CPU和內存佔用的方法

1. 使用裝飾器來衡量函數執行時間

有一個簡單方法,那就是定義一個裝飾器來測量函數的執行時間,並輸出結果:

import time

from functoolsimport wraps

import random

def fn_timer(function):

  @wraps(function)

  def function_timer(*args, **kwargs):

      t0= time.time()

      result= function(*args, **kwargs)

      t1= time.time()

      print("Total time running %s: %s seconds" %

          (function.__name__, str(t1- t0))

)

      return result

return function_timer

@fn_timer

def random_sort(n):

  return sorted([random.random() for i in range(n)])

if __name__== "__main__":

  random_sort(2000000)

輸出:Total time running random_sort: 0.6598007678985596 seconds

使用方式的話,就是在要監控的函數定義上面加上 @fn_timer 就行了

或者

# 可監控程序運行時間

import time

import random

def clock(func):

    def wrapper(*args, **kwargs):

        start_time= time.time()

        result= func(*args, **kwargs)

        end_time= time.time()

        print("共耗時: %s秒" % round(end_time- start_time, 5))

        return result

return wrapper

@clock

def random_sort(n):

  return sorted([random.random() for i in range(n)])

if __name__== "__main__":

  random_sort(2000000)

輸出結果:共耗時: 0.65634秒

2. 使用timeit模塊

另一種方法是使用timeit模塊,用來計算平均時間消耗。

執行下面的腳本可以運行該模塊。

這里的timing_functions是Python腳本文件名稱。

在輸出的末尾,可以看到以下結果:4 loops, best of 5: 2.08 sec per loop

這表示測試了4次,平均每次測試重復5次,最好的測試結果是2.08秒。

如果不指定測試或重復次數,默認值為10次測試,每次重復5次。

3. 使用Unix系統中的time命令

然而,裝飾器和timeit都是基於Python的。在外部環境測試Python時,unix time實用工具就非常有用。

運行time實用工具:

輸出結果為:

Total time running random_sort: 1.3931210041 seconds

real 1.49

user 1.40

sys 0.08

第一行來自預定義的裝飾器,其他三行為:

    real表示的是執行腳本的總時間

    user表示的是執行腳本消耗的CPU時間。

    sys表示的是執行內核函數消耗的時間。

注意:根據維基網路的定義,內核是一個計算機程序,用來管理軟體的輸入輸出,並將其翻譯成CPU和其他計算機中的電子設備能夠執行的數據處理指令。

因此,Real執行時間和User+Sys執行時間的差就是消耗在輸入/輸出和系統執行其他任務時消耗的時間。

4. 使用cProfile模塊

5. 使用line_profiler模塊

6. 使用memory_profiler模塊

7. 使用guppy包

⑤ Python如何獲取圖片長寬等信息

使用PIL模塊,windows安裝包下載:

http://www.pythonware.com/procts/pil/

使用方法

#coding:utf8
#獲取指定圖片的長和寬
fromPILimportImage
img=Image.open("img.jpg")
printimg.size

運行結果:
(52,54)

⑥ Python如何獲取圖片長寬等信息

獲取圖片的長,寬,需要了解你的圖像文件,圖片文件的頭部都是定義好的可以直接讀取,比附bmp格式的直接可以去讀它對應的第幾個位元組,那就是長寬信息。

⑦ python*如何獲取pcie佔用

1、首先需要導入psutil模塊。
2、然後使用【mem.used】調用方法並返回浮點數類型即可獲取系統內存佔用信息。

⑧ python如何查看內存佔用空間

利用psutil模塊,如果沒有直接 pip installpsutil

info=psutil.virtual_memory()
printu'內存使用:',psutil.Process(os.getpid()).memory_info().rss
printu'總內存:',info.total
printu'內存佔比:',info.percent
printu'cpu個數:',psutil.cpu_count()

⑨ python 內存佔用分析工具

pip install memory_profiler
pip install psutil
pip install matplotlib

使用方法
from memory_profiler import profile

@profile(precision=4, stream=open('test.log', 'w+'))
def test(args: List):
...

運行:
python3 test.py

Mem usage:表示執行該行後Python解釋器的內存使用情況
Increment:表示當前行的內存相對於上一行的差異,即自己本身增長了多少,如果減少了則不顯示.

⑩ python 如何計算一個數組所佔的內存

list類似於 Vector
對象和指針數組是分開分配的,數組是在堆上。指針數組的大小是動態分配的,分配的內存肯定要多於實際的。既然是動態分配的,那麼realloc調整大小就會移動數據,復制數據,大量數據還是用鏈表比較好。

dict類似於 Hash table
字典本身默認有元素容量,不夠的才去堆上分配。需要擴容或者收縮,就會動態重新分配內存,重新hash。dict的keys()等調用生成list 如果數量很大,建議用迭代器。

閱讀全文

與python如何獲取圖片所佔內存相關的資料

熱點內容
菜鳥源碼站長 瀏覽:735
3什麼qApp游戲 瀏覽:524
單片機iap有什麼用 瀏覽:43
如何把項目導入伺服器 瀏覽:276
空調壓縮機嗡嗡嗡一下就停 瀏覽:157
java調用weka 瀏覽:146
androidicon紅點 瀏覽:349
深圳百旺金賦抄報伺服器地址 瀏覽:696
黨費演算法實發工資 瀏覽:167
車機上一般安裝什麼app 瀏覽:601
雲伺服器實例sa2 瀏覽:372
工學PDF 瀏覽:377
虛擬xp用加密狗 瀏覽:477
哪家程序員培訓機構好 瀏覽:684
TP源碼需要看多久 瀏覽:352
廣聯達加密鎖識別失敗 瀏覽:368
表格文件夾如何變小 瀏覽:79
Linux下open命令 瀏覽:219
javaeemyeclipse 瀏覽:261
硬碟安裝kalilinux 瀏覽:217