Prima di tutto, seguirò la nomina del framework di registrazione di Python . Tuttavia, fai un po 'attenzione a come lo usi. Nello specifico: lascia che il framework di registrazione espanda le tue variabili, non farlo da solo. Ad esempio, invece di:
logging.debug("datastructure: %r" % complex_dict_structure)
assicurati di fare:
logging.debug("datastructure: %r", complex_dict_structure)
perché mentre sembrano simili, la prima versione sostiene il costo di repr () anche se è disabilitata . La seconda versione lo evita. Allo stesso modo, se fai il tuo, suggerirei qualcosa del tipo:
def debug_stdout(sfunc):
print(sfunc())
debug = debug_stdout
chiamato tramite:
debug(lambda: "datastructure: %r" % complex_dict_structure)
che, ancora una volta, eviterà l'overhead se lo disabiliti facendo:
def debug_noop(*args, **kwargs):
pass
debug = debug_noop
Il sovraccarico del calcolo di quelle stringhe probabilmente non ha importanza a meno che non siano 1) costosi da calcolare o 2) l'istruzione di debug sia nel mezzo, diciamo, di un ciclo n ^ 3 o qualcosa del genere. Non che ne sapessi nulla.