与" ="相比,memoryview的优势是什么?在python的内存共享?

时间:2017-12-29 11:31:26

标签: python

我有两个例子:

# example one:
>>> import array
>>> arr = array.array("h", [-2,-1,0,1,2])
>>> print(list(arr))                       # [-2,-1,0,1,2]

>>> mem_arr = memoryview(arr)
>>> mem_arr.tolist()                       # returns [-2,-1,0,1,2]

>>> mem_arr[0] = 1
>>> mem_arr.tolist()                       # returns [1,-1,0,1,2]

>>> print(list(arr))                       # [1,-1,0,1,2]

# example two:
>>> import array
>>> arr = array.array("h", [-2,-1,0,1,2])
>>> b = arr
>>> print(list(b))                        # [-2,-1,0,1,2]

>>> b[0] = 1
>>> print(list(b))                        # [1,-1,0,1,2]

>>> print(list(arr))                      # [1,-1,0,1,2]

这两个示例都修改了数组中的值而不复制原始值。我认为唯一的区别是:

在第一个例子中,我创建了memoryview对象,它使用与原始数组不同的内存块。在第二个示例中,两个引用arrb都指向原始数组。

那么,memoryview与" ="相比有什么优势?在内存共享方面,或在什么情况下我应该使用memoryview

0 个答案:

没有答案