Definindo tamanho de buffer menor para sys.stdin?
Estou executando o memcached com o seguinte padrão de comando bash:
memcached -vv 2>&1 | tee memkeywatch2010098.log 2>&1 | ~/bin/memtracer.py | tee memkeywatchCounts20100908.log
para tentar rastrear conjuntos incomparáveis de chaves para toda a plataforma.
O script memtracer está abaixo e funciona como desejado, com um pequeno problema. Observando o tamanho intermediário do arquivo de log, o memtracer.py não começa a receber entrada até que o memkeywatchYMD.log tenha cerca de 15 a 18K de tamanho. Existe uma maneira melhor de ler em stdin ou talvez uma maneira de reduzir o tamanho do buffer para menos de 1k para obter tempos de resposta mais rápidos?
#!/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], )