Питхон меморивиев ()

Функција меморивиев () враћа објект приказа меморије датог аргумента.

Пре него што уђемо у оно што су прикази меморије, прво морамо да схватимо Питхонов протокол бафера.

Питхон Буффер протокол

Протокол међуспремника пружа начин за приступ интерним подацима објекта. Ови интерни подаци су меморијски низ или бафер.

Протокол бафера омогућава једном објекту да изложи своје интерне податке (баферима), а другом да приступи тим баферима без посредног копирања.

Овај протокол нам је доступан само на нивоу Ц-АПИ и не користимо нашу уобичајену базу кодова.

Дакле, да би се исти протокол изложио нормалној Питхон кодној бази, присутни су прикази меморије.

Шта је приказ меморије?

Поглед меморије је сигуран начин излагања протокола међуспремника у Питхону.

Омогућава вам приступ интерним баферима објекта стварањем објекта меморијског приказа.

Зашто су протоколи бафера и прикази меморије важни?

Морамо да запамтимо да кад год извршимо неку радњу на објекту (позивамо функцију објекта, исечемо низ), Питхон треба да креира копију објекта .

Ако имамо велике податке са којима можемо радити (нпр. Бинарни подаци слике), непотребно бисмо креирали копије огромних делова података, од којих готово нема користи.

Користећи протокол међуспремника, можемо дати другом објекту приступ да користи / мења велике податке без копирања. Ово чини да програм користи мање меморије и повећава брзину извршавања.

Синтакса Питхон меморивиев ()

Да бисмо изложили протокол бафера помоћу memoryview(), користимо ову синтаксу:

 меморивиев (обј)

параметри меморивиев ()

memoryview()Функција узима један параметар:

  • обј - објекат чији ће интерни подаци бити изложени. objмора подржавати протокол међуспремника (бајтови, бајтраи)

Врати вредност из меморивиев ()

memoryview()Функција враћа сећање поглед на објекат је.

Пример 1: Како меморивиев () ради у Питхону?

 #random bytearray random_byte_array = bytearray('ABC', 'utf-8') mv = memoryview(random_byte_array) # access memory view's zeroth index print(mv(0)) # create byte from memory view print(bytes(mv(0:2))) # create list from memory view print(list(mv(0:3)))

Оутпут

 65 б'АБ '(65, 66, 67) 

Овде смо креирали објекат приказа меморије мв из бајт-низа рандом_бите_арраи.

Затим смо приступили мв-овом 0-ом индексу, 'A'и одштампали га (што даје АСЦИИ вредност - 65).

Поново смо приступили мв индексима од 0 и 1 'AB'и претворили их у бајтове.

Коначно, приступили смо свим индексима мв и претворили га у листу. Будући да интерно bytearrayчува АСЦИИ вредност за абецеде, излаз је листа АСЦИИ вредности А, Б и Ц.

Пример 2: Измените интерне податке помоћу приказа меморије

 # random bytearray random_byte_array = bytearray('ABC', 'utf-8') print('Before updation:', random_byte_array) mv = memoryview(random_byte_array) # update 1st index of mv to Z mv(1) = 90 print('After updation:', random_byte_array)

Оутпут

 Пре надоградње: битеарраи (б'АБЦ ') После надоградње: битеарраи (б'АЗЦ') 

Овде смо ажурирали 1. индекс приказа меморије на 90, АСЦИИ вредност Z.

Будући да се објект приказа меморије мв односи на исти бафер / меморију, ажурирање индекса у мв такође ажурира рандом_бите_арраи.

Занимљиви Чланци...