1. 程式人生 > >【Python】記憶體檢視(操作資料共享記憶體)

【Python】記憶體檢視(操作資料共享記憶體)

memoryview

memoryview可以使用不同的方式讀取和操作同一塊記憶體,並且原有的記憶體位元組不會隨意移動。類似於C中的強轉。

例如,使用memoryview修改一個短整型有符號整數陣列的資料。

from array import array
from random import random

numbers = array('h', [-2, -1, 0, 1, 2]) #signed short
memv = memoryview(numbers)      #5個短整型有符號整數的陣列建立一個memoryview
print (len(memv))               #列印長度
print (memv.tolist()) #轉換成列表形式 memv_oct = memv.cast('B') #記憶體共享 轉換成無符號字元型別 print (memv_oct.tolist()) memv_oct[5] = 4 #把位置5的位元組賦值成4 print (numbers) #因為我們把佔 2 個位元組的整數的高位位元組改成了 4,所以這個有符號整數的值就變成了 1024

輸出如下:

5                       #陣列長度
[-2, -1, 0, 1
, 2] #列表形式顯示 [254, 255, 255, 255, 0, 0, 1, 0, 2, 0]#長度擴大一倍 轉換為無符號字元型別 array('h', [-2, -1, 1024, 1, 2]) #原來的陣列被修改

Demo引用自:流暢的Python 2.9.2節