मेरे पास एक बड़ी परियोजना है जिसमें पर्याप्त बड़ी संख्या में मॉड्यूल हैं, प्रत्येक मानक उत्पादन के लिए कुछ छपाई करता है। अब जैसे-जैसे यह परियोजना आकार में बढ़ी है, बड़ी संख्या में हैं। की printएसटीडी बाहर जो काफी धीमी कार्यक्रम बना दिया है पर बहुत कुछ मुद्रण बयान।
इसलिए, मैं अब रनटाइम पर फैसला करना चाहता हूं कि क्या स्टडआउट को कुछ प्रिंट करना है या नहीं। मैं मॉड्यूल में बदलाव नहीं कर सकता क्योंकि उनमें से बहुत सारे हैं। (मुझे पता है कि मैं स्टडआउट को एक फ़ाइल पर पुनर्निर्देशित कर सकता हूं लेकिन यहां तक कि यह काफी धीमा है।)
तो मेरा सवाल यह है कि मैं स्टडआउट को कुछ भी नहीं करने के लिए कैसे करूँ अर्थात मैं कैसे 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.
वर्तमान में मेरे पास एकमात्र विचार एक वर्ग बनाना है जिसमें एक लेखन विधि है (जो कुछ भी नहीं करता है) और इस वर्ग के एक उदाहरण के लिए स्टडआउट को पुनर्निर्देशित करता है।
class DontPrint(object):
def write(*args): pass
dp = DontPrint()
sys.stdout = dp
क्या इसके लिए अजगर में एक इनबिल्ट मैकेनिज्म है? या इससे कुछ बेहतर है?