Einstellung einer kleineren Puffergröße für sys.stdin?

Ich führe memcached mit dem folgenden Bash-Befehlsmuster aus:

memcached -vv 2>&1 | tee memkeywatch2010098.log 2>&1 | ~/bin/memtracer.py | tee memkeywatchCounts20100908.log

Um zu versuchen, unvergleichliche Sätze für Schlüssel plattformweit zu finden.

Das Memtracer-Skript befindet sich unten und funktioniert wie gewünscht, mit einem kleinen Problem. Wenn Sie die Größe der Zwischenprotokolldatei beobachten, wird memtracer.py erst dann eingegeben, wenn memkeywatchYMD.log eine Größe von etwa 15 bis 18 KB aufweist. Gibt es eine bessere Möglichkeit, stdin einzulesen oder die Puffergröße für schnellere Antwortzeiten auf unter 1 KB zu reduzieren?

#!/usr/bin/python

import sys
from collections import defaultdict

if __name__ == "__main__":


    keys = defaultdict(int)
    GET = 1
    SET = 2
    CLIENT = 1
    SERVER = 2

    #if <
    for line in sys.stdin:
        key = None
        components = line.strip().split(" ")
        #newConn = components[0][1:3]
        direction = CLIENT if components[0].startswith("<") else SERVER

        #if lastConn != newConn:        
        #    lastConn = newConn

        if direction == CLIENT:            
            command = SET if components[1] == "set" else GET
            key = components[2]
            if command == SET:                
                keys[key] -= 1                                                                                    
        elif direction == SERVER:
            command = components[1]
            if command == "sending":
                key = components[3] 
                keys[key] += 1

        if key != None:
            print "%s:%s" % ( key, keys[key], )

Antworten auf die Frage(10)

Ihre Antwort auf die Frage