Heim  >  Artikel  >  Backend-Entwicklung  >  Wie reduziere ich die Puffergröße für sys.stdin?

Wie reduziere ich die Puffergröße für sys.stdin?

Linda Hamilton
Linda HamiltonOriginal
2024-10-21 10:38:29606Durchsuche

How to Reduce Buffer Size for 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn