日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python memoryview_memoryview的用法

發布時間:2025/3/12 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python memoryview_memoryview的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本來第一次看《流暢的python》覺得這部分沒用,就跳過去,后面又出現,回頭看還是一知半解,查了諸多資料,好像有一點明白了,立下帖子。

1、memoryview

memoryview()

函數返回給定參數的內存查看對象(memory view)。

所謂內存查看對象,是指對支持緩沖區協議的數據進行包裝,在不需要復制對象基礎上允許Python代碼訪問。

可以簡單理解為就是對內存地址的直接訪問。

memoryview可以對對象進行索引或者切片,不過切片的返回結果為一個子memoryview對象:

import array

# 創建一個signed short 類型數組,占2bytes

nums = array.array('h', list(range(-2, 3)))

mem = memoryview(nums)

print(len(mem)) # 5

print(mem[0]) # -2

print(mem[1:4]) #

mem相當于nums在內存中的表示形式,但是屬于不同的對象:

>>>mem is nums

False

>>>mem == nums

True

同樣,memoryview對象有tolist方法可以轉換為列表:

>>>mem.tolist()

[-2, -1, 0, 1, 2]

2、memoryview.cast

memoryview.cast

會把同一塊內存里的內容打包成一個全新的memoryview對象。

>>>mem_oct = mem.cast('B')

>>>mem.nbytes == mem_oct.nbytes

True

>>>mem.itemsize == mem_oct.itemsize

False

在轉換以后,所占字節數保持不變,但是單個元素的所占字節由原來的2個變成1個(‘h’ --> ‘B’)。

Type code

C Type

Python Type

Minimum size in bytes

‘c’

char

character

1

‘b’

signed char

int

1

‘B’

unsigned char

int

1

‘u’

Py_UNICODE

Unicode character

2 (see note)

‘h’

signed short

int

2

‘H’

unsigned short

int

2

‘i’

signed int

int

2

‘I’

unsigned int

long

2

‘l’

signed long

int

4

‘L’

unsigned long

long

4

‘f’

float

float

4

‘d’

double

float

8

將mem_oct轉換為list,你會發現mem_oct居然包含10個元素:

>>>mem_oct.tolist()

[254, 255, 255, 255, 0, 0, 1, 0, 2, 0]

所包含的元素也很奇怪,這個就涉及到存儲的一些知識,為了將將符號位和數值域統一處理,同時加法和減法也可以統一處理,計算機系統中數值一律用補碼來表示和存儲。

以-2為例,初始設置其數據類型為占用兩個字節的’long’,其原碼是1000 0000 0000 0010,而在計算機存儲的是1111 1111 1111 1110,其低八位為254,高8位為255,所以知道mem_oct前兩個元素從哪里來了吧。

對于2來說,原碼為0000 0000 0000 0010,補碼為其本身(正數的補碼與原碼一致),所以轉換后為2,0。

歡迎關注我的微信公眾號

總結

以上是生活随笔為你收集整理的python memoryview_memoryview的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。