Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Robertus98 en 5 Julio 2014, 02:54 am



Título: Problema threads en python (setDaemon)
Publicado por: Robertus98 en 5 Julio 2014, 02:54 am
Buenas haber si alguien me puede ayudar a resolver este problema que tengo! :-\

Supongamos que tengo un codigo parecido a este:
Código
  1. import time
  2. import threading
  3.  
  4. def hola():
  5.    while 1:
  6.        print "Hola"
  7.        time.sleep(3)
  8. t = threading.Thread(target=hola())
  9. t.setDaemon(True)
  10. t.start()
  11. while True:
  12.    print "adios"
  13.    time.sleep(5)
  14.  

Supuestamente si ejecuto el thread como daemon deberia dejar avanzar  el script no?

Un saludo!


Título: Re: Problema threads en python (setDaemon)
Publicado por: daryo en 5 Julio 2014, 03:19 am
Código
  1. Supuestamente si ejecuto el thread como daemon deberia dejar avanzar  el script no?
lo que hace es que si se cierra el thread principal el daemon tambien se cierra solo cambia eso. si por ejemplo hago una ventana y el usuario la intenta cerrarla si tuviera corriendo threads que no son daemon no podra cerrarse pero en cambio como daemon si se cerrara.

 el script avanzara sea o no sea daemon el thread


Título: Re: Problema threads en python (setDaemon)
Publicado por: Robertus98 en 5 Julio 2014, 03:23 am
Vale, entonces porque no me avanza?
Una imagen vale más que mil palabras!
http://imgur.com/8bUhxeY


Título: Re: Problema threads en python (setDaemon)
Publicado por: daryo en 5 Julio 2014, 04:31 am
porque los threads de python son algo extraños solo se puede ejecutar un thread a la vez y luego se bloquea para ejecutar otro, esto es lo que hacen los threads de forma oculta por alguna razon python no lo hace y hay que hacer todo este proceso a mano

http://mundogeek.net/archivos/2008/04/18/threads-en-python/

si quieres evitar esto crea otro proceso

cuando dices avanza estas imaginando el proceso como algo independiente del thread y no es asi cuando uno avanza el otro tambien.


Título: Re: Problema threads en python (setDaemon)
Publicado por: Robertus98 en 5 Julio 2014, 14:45 pm
Vale, ahora lo he entendido todo!
Muchas gracias por la información!

Un saludo! ;)