Machen Sie die Standardausgabe in Python nicht blockierend

Die Standardausgabe verfügt über einen Puffer, der jedoch beim Befüllen blockiert wird. Möglicherweise stoßen Sie auf Situationen, in denen Sie die Ausgabe genauso aufgeben möchten wie das Blockieren. Zu dieser Zeit dies

import fcntl, sys, os
fl = fcntl.fcntl(sys.stdout.fileno(), fcntl.F_GETFL)
fl = fl | os.O_NONBLOCK
fcntl.fcntl(sys.stdout.fileno(), fcntl.F_SETFL, fl)

Auf diese Weise

while True:
    try:
        print("hoge" * 100)
    except IOError, (errno, strerror):
        sys.stderr.write("I/O error(%s): %s\n" % (errno, strerror))

Als ich schrieb

$ ./hoge.py | ./Langsames Programm
I/O error(11): Resource temporarily unavailable
I/O error(11): Resource temporarily unavailable
...

Es wird sich so verhalten

Recommended Posts

Machen Sie die Standardausgabe in Python nicht blockierend
Japanische Ausgabe mit Python
So geben Sie "Ketsumaimo" standardmäßig in Python aus
Mach nicht test.py in Python!
Transmutationsmatrix im Python-Standard
Erstellen Sie ein Lesezeichen in Python
Stellen Sie Opencv in Python zur Verfügung
Segfo Python in 2 Zeilen
Lesen Sie die Fortran-Ausgabe mit Python
Holen Sie sich die Standardausgabe in Echtzeit mit dem Python-Unterprozess
Ausgabeprotokoll im JSON-Format mit Python-Standardprotokollierung
Segfo Python in einer Zeile
Ausgabe 2017 Premium Friday List in Python
Ändern Sie das Standardausgabeziel in eine Datei in Python
Segfo Python in drei Zeilen
Exportieren und Ausgeben von Dateien in Python
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
Dateneingabe / -ausgabe in Python (CSV, JSON)
Erstellen Sie mit Python eine GIF-Animation für ASCII-Grafiken
Ausgabebaumstruktur von Dateien in Python
UnicodeEncodeError hat Probleme mit der Standardausgabe von Python3
Lassen Sie uns eine Kombinationsberechnung mit Python durchführen
Stellen Sie sicher, dass in Python regelmäßig Cron-ähnliche Jobs ausgeführt werden
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Python-Lernausgabe
[Python] Standardeingabe
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python