में फ़्लश किया गया है, मैं कुछ कोड लिखने की कोशिश कर रहा हूं, जिसमें बहुत सी समान प्रक्रियाएं शामिल हैं। और sys.stdout
पर उत्पादन से जुड़े कुछ अवांछित व्यवहार और कुछ संदेश दो बार मुद्रित किए जा रहे हैं। डिबगिंग उद्देश्यों के लिए यह जानना बहुत उपयोगी होगा कि किसी निश्चित बिंदु पर sys.stdout
फ़्लश किया गया है या नहीं। मुझे आश्चर्य है कि यह संभव है और यदि हां, तो कैसे?कैसे बताएं कि sys.stdout को पायथन
Ps। मुझे नहीं पता कि यह मायने रखता है लेकिन मैं ओएस एक्स का उपयोग कर रहा हूं (कम से कम कुछ sys
कमांड ऑपरेटिंग सिस्टम पर निर्भर करते हैं)।
फ्लश या नहीं, sys.stdout आपको प्रक्रियाओं के बीच गारंटीकृत आदेश देने वाला नहीं है (और यह एक ही प्रक्रिया में धागे के बीच भी नहीं हो सकता है)। सटीक टाइमस्टैम्प और प्रत्येक से अलग संदेश लॉग इन क्यों न करें, या इससे भी बेहतर, क्या उनमें से सभी थ्रेडसेफ या इंटरप्रोसेस कतार के माध्यम से डीबग संदेश भेजते हैं? – James
समस्या यह है कि एक ही आउटपुट दो बार होता है, इसलिए टाइमस्टैम्प e.t.c. जोड़ना। वास्तव में मदद नहीं करेगा। कुछ कस्टम के लिए sys.stdout को भी बदलना मदद नहीं करता है क्योंकि यह वास्तव में बफर के साथ एक समस्या है। अगर मैं -उ फ्लैग के साथ सभी शामिल पायथन प्रक्रियाओं को शुरू करता हूं तो मुझे समस्या नहीं मिलती है। मैं जानना चाहता हूं कि कुछ आईओ खुशियों के बाद हमेशा झुकाव के बजाय वास्तव में क्या चल रहा है, क्योंकि यह इस मुद्दे के मूल को समझे बिना एक बदसूरत कामकाज होगा। – koffie