Re: [Python-es] gráfico en barras en tiempo real
Maria Eugenia Ferrero
ferrero.mariaeugenia en gmail.com
Mie Sep 26 22:38:26 CEST 2007
La verdad es que si soy muy nueva en Python por eso seguramente mis
preguntas tontas... Y es por eso que me da mucha impotencia porque sé que es
algo sumamente fácil y no me está saliendo. Lamento mucho molestarlos y
agradezco a quienes pierden su tiempo contestándome.
Muchas gracias Reynaldo, te lo agradezco un montón. He probado lo que me
dijiste y me funciona, lo que yo quería, que es que la imagen también se
mueva en tiempo real. Ahora tengo otro problemita: la imagen no se me
adjunta a la aplicación que yo tengo. Es decir, antes cuando sólo la tomaba
y la pegaba si andaba bien, pero ahora que la imagen también corre en tiempo
real no se ve en mi ventanita de la aplicación (sólo la veo en la carpeta
donde la guardo).
una última ayudita puede ser....???? GRACIAS.-
El día 26/09/07, Arnau Sanchez <arnau en ehas.org> escribió:
>
> Maria Eugenia Ferrero escribió:
>
> > Qué es exactamente lo que hace: dato.split()[0].strip('k') for dato in
> > temp.split(':')[1].split(',')] ???
> > Perdón mi ignorancia pero probando eso tampoco me sale entonces quiero
> saber
> > mas o menos que es lo que estoy intetando hacer para ir probando
> > modificándole algo.....
> > Me da impotencia saber que es algo tan sencillo y que no me
> sale...!!!!!!
>
> Tampoco creo que sea un problema tan trivial. Pero si tienes
> dificultades con las comprensiones de listas, es señal de que hace poco
> que estás con Python o que aún te falta algo de soltura...
>
> En este caso, por ejemplo, para hacerlo de forma más o menos compacta,
> podrías usar el módulo subprocess, expresiones regulares (módulo re) y
> generadores; en un primera aproximación puede no ser evidente.
>
> Cualquier solución que implique llamar una y otra vez a top no es
> aceptable. Hay que lanzarlo una única vez e ir leyendo datos sin esperar
> a que acabe (para eso se usa un objeto Popen del módulo subprocess).
> Antes preguntabas acerca de un parámetro del comando top, pero no tienes
> más que repasar su página de manual ("man top" en la shell)
>
> Te paso una posible implementación en la cual se extraen, a modo de
> ejemplo, tres campos (los indicados en "fields"); te resultará sencillo
> ampliarlo e integrarlo en tu programa. La forma de extraer los campos no
> es especialmente eficiente, pero de este modo la función es más sencilla
> de abstraer:
>
> #!/usr/bin/python
> import subprocess
> import re
>
> def process(command):
> return subprocess.Popen(command, stdout=subprocess.PIPE)
>
> def top(delay):
> command = ["top", "-b", "-d", str(delay)]
> return process(command)
>
> def get_fields(datainput, fields):
> for line in datainput:
> for field, regexp in fields:
> match = re.search(regexp, line)
> if match:
> yield field, int(match.groups()[0])
>
> top_fields = [("total_memory", "^Mem:.*\s(\d+)k\s*total"),
> ("free_memory", "^Mem:.*\s(\d+)k\s*free"),
> ("free_swap", "^Swap:.*\s(\d+)k\s*free")]
>
> popen = top(delay=1.0)
> for field, value in get_fields(popen.stdout, top_fields):
> print field, value # hacer algo con field y value
>
> Si tienes dificultades con algo de lo que hace, repasa el tutorial y la
> documentación de las librerías. O en caso de problemas insalvables,
> vuelve a la lista :-)
>
> arnau
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
Más información sobre la lista de distribución Python-es