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@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a