2010-11-09 14 views
11

Python'da hashlib.md5 örneğini nasıl temizler (veya sıfırlar) ve yeniden kullanırsınız? Bir komut dosyasında birden çok karma işlem gerçekleştiriyorsam, her defasında yeni bir hashlib.md5 örneğini kullanmak için verimsiz gibi görünüyor, ancak python dokümantasyonundan örneği sıfırlamak veya sıfırlamak için herhangi bir yol görmüyorum.hashlib.md5 örneği nasıl kullanılır

+1

Küçücük bir nesne oluşturmayı kabul etmeden önce bir sonraki sefer kıyaslaması "verimsiz" dir. –

cevap

6

Neden yeni bir tane üretmenin yetersiz olduğunu düşünüyorsunuz? Bu küçük bir nesne ve nesneler her zaman yaratılır ve yok edilir. Yeni bir tane kullan ve endişelenme.

+1

Bir hashlib nesnesini yeniden kullanmak için hızdan başka nedenler var. Örneğin, hashlib nesnesini (md5, sha1, ... olabilir) alabilir ve birden çok dosyanın sağlama toplamını oluşturmak için yeniden kullanmak isteyebilirsiniz. Bu durumda, çağrıldığında yeni bir hashlib nesnesi yaratacak bir lambda geçebilir, ancak bu hantaldır. –

-1

İşte yaptığım şey, hash nesnesini yeniden başlatan küçük bir sarıcı yazmanız. Kod yazımının beceriksizliğini işler, ancak çalışma zamanında verimlilikten değil.

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, bu nesneyi yeniden kullanmıyor. Sanırım bu api'de sıfırlama yöntemi yok, yani yeniden kullanmak mümkün değil mi yoksa nesneyi sıfırlamak için 'update' yöntemine geçebileceğiniz bir değer var mı? – Gubatron