ฉันมีโปรเจ็กต์ขนาดใหญ่ที่ประกอบด้วยโมดูลจำนวนมากเพียงพอโดยแต่ละชิ้นจะพิมพ์บางอย่างไปยังเอาต์พุตมาตรฐาน ตอนนี้เนื่องจากโครงการมีขนาดใหญ่ขึ้นเรื่อย ๆ ของprint
งบการพิมพ์มากในการออกมาตรฐานซึ่งได้ทำโปรแกรมช้ามาก
ตอนนี้ฉันต้องการตัดสินใจที่รันไทม์ว่าจะพิมพ์อะไรลงใน stdout หรือไม่ ฉันไม่สามารถทำการเปลี่ยนแปลงในโมดูลได้เนื่องจากมีโมดูลมากมาย (ฉันรู้ว่าฉันสามารถเปลี่ยนเส้นทาง stdout ไปยังไฟล์ได้ แต่มันก็ช้ามาก)
ดังนั้นคำถามของฉันคือฉันจะเปลี่ยนเส้นทาง stdout ไปเป็น nothing ได้อย่างไรเช่นฉันจะทำให้print
คำสั่งไม่ทำอะไรได้อย่างไร
# 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.
ตอนนี้ความคิดเดียวที่ฉันมีคือสร้างคลาสที่มีวิธีการเขียน (ซึ่งไม่ทำอะไรเลย) และเปลี่ยนเส้นทาง stdout ไปยังอินสแตนซ์ของคลาสนี้
class DontPrint(object):
def write(*args): pass
dp = DontPrint()
sys.stdout = dp
มีกลไก inbuilt ใน python สำหรับสิ่งนี้หรือไม่? หรือมีอะไรที่ดีกว่านี้?