Yeterince çok sayıda modülden oluşan ve her biri standart çıktıya bir şeyler yazdıran büyük bir projem var. Şimdi proje boyut olarak büyüdükçe, büyük bir hayır var. arasında printönemli ölçüde daha yavaş programını yapmıştır std dışarı üzerinde çok baskı ifadeleri.
Bu yüzden, çalışma zamanında stdout'a herhangi bir şey yazdırıp yazdırmamaya karar vermek istiyorum . Modüllerde bol miktarda olduğu için değişiklik yapamıyorum. (Standart çıkışı bir dosyaya yönlendirebileceğimi biliyorum ama bu bile oldukça yavaş.)
Öyleyse sorum şu: stdout'u hiçbir şeye nasıl yönlendirebilirim, yani printifadenin hiçbir şey yapmamasını nasıl sağlayabilirim ?
# 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.
Şu anda sahip olduğum tek fikir, yazma yöntemine sahip (hiçbir şey yapmayan) bir sınıf yapmak ve stdout'u bu sınıfın bir örneğine yönlendirmek.
class DontPrint(object):
def write(*args): pass
dp = DontPrint()
sys.stdout = dp
Bunun için python'da dahili bir mekanizma var mı? Yoksa bundan daha iyi bir şey mi var?