2010-11-09 5 views
11

Как выполнить сброс (или сброс) и повторное использование экземпляра hashlib.md5 в python? Если я выполняю несколько операций хэширования в скрипте, кажется, неэффективно использовать новый экземпляр hashlib.md5 каждый раз, но из документации python я не вижу никакого способа сбросить или сбросить экземпляр.Как повторно использовать экземпляр hashlib.md5

+1

Контрольный балл в следующий раз, прежде чем предполагать, что создание крошечного объекта «неэффективно». –

ответ

6

Почему, по вашему мнению, неэффективно создавать новый? Это небольшой объект, и объекты все время создаются и уничтожаются. Используйте новый, и не беспокойтесь об этом.

+1

Есть и другие причины, кроме скорости повторного использования объекта hashlib. Например, вы можете получить объект hashlib (который может быть md5, sha1, ...) и хотите повторно использовать его для создания контрольной суммы нескольких файлов. В этом случае можно было бы передать лямбду, которая будет создавать новый объект хешлиба при вызове, но это громоздко. –

-1

Вот что я сделал, просто напишите небольшую обертку, которая повторно инициализирует хэш-объект. Обрабатывает неряшливость написания кода, но, возможно, не эффективность во время выполнения.

def Hasher(object): 
    def __init__(self): 
     self.md5 = hashlib.md5() 

    def get_hash(self, o): 
     self.md5.update(o) 
     my_hash = self.md5.digest() 
     self.md5 = hashlib.md5() 
     return my_hash 
+0

ha, это не повторное использование объекта. Я думаю, что в этом api нет метода 'reset', так что его нельзя повторно использовать ?, или есть ли значение, которое вы можете передать методу' update' для сброса объекта? – Gubatron

Смежные вопросы