Вот строка из хеш-функции, которую я написал:
M = tuple(buffer(M, i, Nb) for i in range(0, len(M), Nb))
Это разделит длинную строку M на более короткие «строки» длиной Nb, где Nb - число байтов / символов Iможет справиться одновременно.Он делает это БЕЗ копирования любых частей строки, как это было бы, если бы я сделал кусочки строки следующим образом:
M = tuple(M[i*Nb:i*Nb+Nb] for i in range(0, len(M), Nb))
Теперь я могу перебирать M так же, как если бы я его нарезал:
H = key
for Mi in M:
H = encrypt(H, Mi)
По сути, буферы и представления памяти являются эффективными способами борьбы с неизменяемостью строк в Python и общим поведением копирования срезов и т. Д. Представление памяти подобно буферу, за исключением того, что вы также можете записывать в него,не просто читать.
В то время как основной документ о буфере / обзоре памяти посвящен реализации на C, на странице стандартных типов есть немного информации в памяти: http://docs.python.org/library/stdtypes.html#memoryview-type
Редактировать: нашел это в моемзакладки, http://webcache.googleusercontent.com/search?q=cache:Ago7BXl1_qUJ:mattgattis.com/2010/3/9/python-memory-views+site:mattgattis.com+python&hl=en&client=firefox-a&gl=us&strip=1 - ДЕЙСТВИТЕЛЬНО хорошая краткая рецензия.
Редактировать 2: Оказывается, я получил эту ссылку с Когда следует использовать просмотр памяти? во-первых, чтоНа вопрос никогда не отвечали подробно, и ссылка была мертвой, так что, надеюсь, это поможет.