【Python】記憶體檢視(操作資料共享記憶體)
阿新 • • 發佈:2019-02-14
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節