[Python-es] ayuda con hilos de ejecución

gmail manuelcortez00 en gmail.com
Mie Dic 21 03:45:20 CET 2011


Gracias por las aclaraciones y las pistas.

La verdad no tengo bastante conocimiento en el uso de la programación 
multihilo, tengo muy poco de enterarme bien acerca de como funciona y 
agradezco que me hayas ayudado con esto.

La función Contador la hice pensando en un único proceso, nunca la 
imaginé para hacerla con hilos, por eso el KeiboardInterrupt lo puse 
así, pero probando con el código que vi en la página de python forum, 
que por cierto está bastante bien, no pude conseguir que el 
KeiboardInterrupt le llegara a la función, por lo uqe creo que se tiene 
que crear de nuevo toda la función, pero ahora sí, teniendo en cuenta 
que será una aplicación dispuesta a aprovechar el trabajo mediante hilos.

Buscaré en internet acerca de la programación utilizando este tipo de 
elementos y gracias a todos por su ayuda.

Saludos.



El 20/12/11 19:11, Chema Cortes escribió:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> El 21/12/11 00:47, gmail escribió:
>> Gracias por la ayuda.
>>
>> Al final me dí cuenta que creo que jamás conseguiré que el hilo detenga
>> bien la función, me imagino que porque la función no estaba pensada para
>> implementar hilos, tengo una nueva duda que creo que puede resolber el
>> problema.
>>
>> Si defino la función dentro del la función run de la clase del thread,
>> podré obtener el valor de retorno?
> Creo que deberías estudiar algo más sobre programación multihilo.
> Necesitas algún modo de sincronizar los hilos, ya sea estableciendo
> algún tipo de señal, o usando algún almacenaje intermedio que sirva para
> comunicar hilos.
>
> Como señal, en el módulo threading tienes Event. Se la pasas al hilo
> contador al crearlo y haces que el hilo esté pendiente de los cambios en
> el evento (en lugar de tener un bucle 'while 1', pones un 'while not
> event.is_set()')
>
> Por otro lado, el servidor debe comprobar si el hilo contador sigue
> activo con is_active(). Si no va a hacer nada interesante, deberías
> poner al servidor en espera a que termine el hilo contador con
> wait(timeout) en vez de meterlo en un bucle sin fin.
>
> Por último, faltaría tener un lugar para guardar el contador al que
> puedan acceder los hilos. Como variable numérica, no deberías tener
> problemas por ser su lectura/escritura una operación atómica. Pero en
> casos más complejos necesitarías usar "locks" que pusieran orden en los
> accesos a las variables, o bien utilizar algunas de las estructuras de
> datos apropiadas como Queue o deque.
>
> Tan sólo añadir que no deberías usar el KeyboardInterrupt para parar un
> hilo, ya que nuncas vas a estar seguro de qué hilo recibirá la interrupción.
>
> Espero que te sirvan estas pistas (te las he dicho de memoria). Si no te
> aclaras, te pongo un ejemplo en cuanto tenga tiempo.
>
>
> Saludos,
> - -- 
> Hyperreals *R: http://ch3m4.org/blog
> Quarks, bits y otras criaturas infinitesimales
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iQEcBAEBAgAGBQJO8TI5AAoJEFdWyBWwhL4F2IMIAKuV6KYuo0yFIt0wT28SoPZ/
> hxM2H3J4IU3kA+jGOCtfZM9mIgaFyuJ1A6H21jmSuRRnxZ8UcHjeUgQDnSLcCRv7
> m7lxSbKTnJSiR0fQATDpsWUAXTnMDPjLfnpvh/xbs7xqb4cDGx2j2VMveRkbqgbm
> 6H1ptk1X1T1sVW53gpFxruVVWPvYzlm+IDwL8m+6cV6niZdflvGqjwOEqoiFHJKj
> 8ja4r2Nudql0r1a2fDQEwXzQltr9iKmadQ92AINXbxTGhboCjyAmP2RuLoikDfeb
> 8nmFWfmgbwv+Re9/P20NDmENz9TKxO/rBZhXIWI/NjsmBsKsE+MuPPPLK2Tyt1U=
> =1hpb
> -----END PGP SIGNATURE-----
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/



Más información sobre la lista de distribución Python-es