Sto provando a eseguire il debug del codice che ho scritto, che implica molti processi paralleli. E avere alcuni comportamenti indesiderati che coinvolgono l'output a sys.stdout
e alcuni messaggi vengono stampati due volte. Ai fini del debug, sarebbe molto utile sapere se ad un certo punto sys.stdout
è stato svuotato o meno. Mi chiedo se sia possibile e se sì, come?Come sapere se sys.stdout è stato svuotato in Python
Ps. Non so se è importante, ma sto usando OS X (almeno alcuni comandi di sys
dipendono dal sistema operativo).
Svuotato o meno, sys.stdout non ti darà l'ordine garantito tra i processi (e potrebbe non essere nemmeno tra i thread nello stesso processo). Perché non aggiungere timestamp accurati e registrare i messaggi separatamente da ciascuno di essi, o, ancora meglio, tutti hanno inviato messaggi di debug tramite una coda di thread o di interprocesso? – James
Il problema è che lo stesso output si verifica due volte, quindi aggiungere timestamp e.t.c. non sarà di grande aiuto. Anche cambiare sys.stdout in qualcosa di personalizzato non aiuta poiché questo è davvero un problema con il buffer. Se avvio tutti i processi Python coinvolti con il flag -u, non ho il problema. Vorrei sapere che cosa sta succedendo esattamente, invece di arrossire sempre dopo che un IO è passato, poiché sarebbe stata una brutta soluzione senza comprendere il nocciolo del problema. – koffie