Saya memiliki proyek besar yang terdiri dari sejumlah besar modul, masing-masing mencetak sesuatu dengan output standar. Sekarang karena proyek telah tumbuh dalam ukuran, ada yang tidak besar. dari printpernyataan mencetak banyak di luar std yang telah membuat program lebih lambat.
Jadi, saya sekarang ingin memutuskan pada saat runtime apakah akan mencetak sesuatu ke stdout atau tidak. Saya tidak dapat membuat perubahan dalam modul karena ada banyak dari mereka. (Saya tahu saya bisa mengarahkan stdout ke file tetapi bahkan ini sangat lambat.)
Jadi pertanyaan saya adalah bagaimana cara mengarahkan stdout ke nol yaitu bagaimana saya membuat printpernyataan tidak melakukan apa-apa?
# I want to do something like this.
sys.stdout = None # this obviously will give an error as Nonetype object does not have any write method.
Saat ini satu-satunya ide yang saya miliki adalah membuat kelas yang memiliki metode tulis (yang tidak melakukan apa-apa) dan mengarahkan stdout ke turunan dari kelas ini.
class DontPrint(object):
def write(*args): pass
dp = DontPrint()
sys.stdout = dp
Apakah ada mekanisme inbuilt di python untuk ini? Atau ada sesuatu yang lebih baik dari ini?