Come si svuota (o si ripristina) e riutilizzare un'istanza di hashlib.md5 in python? Se eseguo più operazioni di hashing in uno script, sembra inefficiente utilizzare ogni volta una nuova istanza di hashlib.md5, ma dalla documentazione di Python non vedo alcun modo per svuotare o ripristinare l'istanza.Come riutilizzare un'istanza di hashlib.md5
risposta
Perché pensi che sia inefficiente produrne uno nuovo? È un oggetto piccolo e gli oggetti vengono creati e distrutti tutto il tempo. Usane uno nuovo e non preoccuparti.
Ci sono altri motivi che la velocità di riutilizzare un oggetto hashlib. Ad esempio, potresti ricevere l'oggetto hashlib (che potrebbe essere md5, sha1, ...) e vuoi riutilizzarlo per creare il checksum di più file. In tal caso, si potrebbe passare una lambda che creerà un nuovo oggetto hashlib quando viene chiamato, ma è ingombrante. –
Ecco cosa ho fatto, basta scrivere un piccolo wrapper che reinizializza l'oggetto hash. Gestisce il clunkiness della scrittura del codice, ma forse non l'efficienza in fase di esecuzione.
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
ha, che non sta riutilizzando l'oggetto. Immagino che non ci sia un metodo 'reset' in questa api, quindi non è possibile riutilizzarlo? O esiste un valore che puoi passare al metodo' update' per resettare l'oggetto? – Gubatron
- 1. Come riutilizzare gli stili?
- 2. Come riutilizzare HttpUrlConnection?
- 3. Come riutilizzare un ostringstream?
- 4. come riutilizzare stringstream
- 5. Come riutilizzare la connessione FtpWebRequest
- 6. come riutilizzare correttamente una maniglia di arricciatura
- 7. Come posso riutilizzare un'espressione di tabella comune
- 8. JSch Come riutilizzare una sessione
- 9. Riutilizzare SqlCommand?
- 10. Perché riutilizzare `undefined`?
- 11. Come riutilizzare un thread in Java?
- 12. Come riutilizzare il codice in QML
- 13. Come riutilizzare i layout in WPF
- 14. Come riutilizzare il codice con VBA
- 15. Come riutilizzare il codice in molteplici Enum
- 16. Come riutilizzare una query secondaria in sql?
- 17. Come riutilizzare un app riutilizzabile in Django
- 18. Come riutilizzare le proiezioni in Entity Framework?
- 19. Come personalizzare e riutilizzare uno stile DataGridColumnHeader?
- 20. PhoneGap Come riutilizzare/includere la pagina HTML?
- 21. Come riutilizzare WPF DataGridTemplateColumn (incluso il binding)
- 22. Come posso riutilizzare questo pulsante Android?
- 23. Riutilizzare una vista ClearCase
- 24. R data.table: riutilizzare un'aggregazione
- 25. Riutilizzare un contenitore spostato?
- 26. Riutilizzare le attività precedenti?
- 27. come riutilizzare una funzione in più controller
- 28. Come riutilizzare i grafici in matplotlib?
- 29. riutilizzare la BackgroundWorker più di una volta
- 30. Come posso riutilizzare HTML/JSP all'interno di una pagina?
Il benchmark la prossima volta prima di assumere la creazione di un oggetto minuscolo è "inefficiente". –