Heim > Artikel > Backend-Entwicklung > Wie reduziere ich die Puffergröße für sys.stdin?
So reduzieren Sie die Puffergröße für sys.stdin
Beim Ausführen des Befehls:
<code class="bash">memcached -vv 2>&1 | tee memkeywatch2010098.log 2>&1 | ~/bin/memtracer.py | tee memkeywatchCounts20100908.log</code>
es wurde beobachtet dass memtracer.py keine Eingaben empfängt, bis memkeywatchYMD.log eine Größe von 15–18 KB überschreitet. Um dieses Problem anzugehen, gibt es zwei Ansätze:
Verwendung des ungepufferten Flags (-u)
Python stellt ein ungepuffertes Flag -u bereit, das die Pufferung von stdin/stdout entfernt. Durch Aufrufen von Python mit diesem Flag:
<code class="bash">python -u ~/bin/memtracer.py</code>
Sie können die Pufferung für stdin und stdout vollständig eliminieren.
Erstellen eines neuen Dateiobjekts mit unterschiedlicher Pufferung
Sie können auch ein neues Dateiobjekt mit demselben zugrunde liegenden Dateideskriptor wie bei der Standardeingabe, jedoch mit einer kleineren Puffergröße erstellen. Dies kann mit os.fdopen erreicht werden:
<code class="python">import os import sys # Create a new file object with a buffer size of 100 bytes newin = os.fdopen(sys.stdin.fileno(), 'r', 100) # Assign the new file object to standard input sys.stdin = newin</code>
Dieser Code sollte es Ihnen ermöglichen, von der Standardeingabe mit einer Puffergröße von nur 100 Bytes zu lesen, was zu schnelleren Antwortzeiten führt. Beachten Sie, dass dieser Ansatz möglicherweise plattformspezifische Einschränkungen aufweist. Daher werden gründliche Tests empfohlen.
Das obige ist der detaillierte Inhalt vonWie reduziere ich die Puffergröße für sys.stdin?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!