elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
11 Octubre 2008, 18:31  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Scripting
| | | |-+  hilos en python que tardan mucho
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: hilos en python que tardan mucho  (Leído 251 veces)
lovita

Desconectado Desconectado

Mensajes: 2


Ver Perfil
hilos en python que tardan mucho
« en: 13 Marzo 2008, 09:06 »

Hola a todos,

Tengo una aplicación en la que envío el mismo mensaje a un conjunto de PC's.

Uso un hilo por cada socket a enviar:

> import thread
> ....
> ...
> ...
>
> for ip in ips: #ips es una lista con las ips destino
> thread.start_new(envia_socket,(ip,puerto,mensaje))
>

La función envia_socket sólo se dedica a enviar el mensaje al destino:

> def envia_socket(servidor,puerto,msg):
>
> s=socket(AF_INET,SOCK_STREAM) #creamos socket tipo TCP/IP
> #s.settimeout(20)
> try:
> s.connect((servidor,puerto)) #nos conectamos al servidor
> s.send(msg)
> s.close() # cerramos conexion
> envio_ok.append(servidor)
> except timeout:
> error1.append(servidor)
> except error: # si error capturamos excep
> error2.append(servidor)
>

El problema es que si envío un mensaje a un sólo equipo y el pc está apagado el socket intenta conectar durante unos 20 seg. En cambio si se lo mando a unos 30 equipos y estos está apagados la ejecución se demora hasta pasar el minuto. Si uso threading me ocurre lo mismo. Y si establezco un settimeout he de poner un tiempo elevado para que recorra todos los equipos.

No sé si estos tiempos son normales, pero si son procesos en pararelos ... ¿no debería tardarme aproximadamente lo mismo en enviar a un equipo que a varios? Creo que algo hago mal, a ver si pueden ayudarme. Gracias !
En línea
Ragnarok
Moderador Global
*****
Desconectado Desconectado

Mensajes: 4.227


Ver Perfil
Re: hilos en python que tardan mucho
« Respuesta #1 en: 14 Marzo 2008, 00:19 »

Bienvenido, lee las normas y usa las etiquetas de código, porque si no ya ves que sale bastante mal. Prueba a hacer esto:

Código
import thread
....
...
...
 
for ip in ips: #ips es una lista con las ips destino
 thread.start_new(envia_socket,(ip,puerto,mensaje))
Código
def envia_socket(servidor,puerto,msg):
 print 'inicio', servidor
 s=socket(AF_INET,SOCK_STREAM) #creamos socket tipo TCP/IP
   #s.settimeout(20)
   try:
     s.connect((servidor,puerto)) #nos conectamos al servidor
     s.send(msg)
     s.close() # cerramos conexion
     envio_ok.append(servidor)
   except timeout:
     error1.append(servidor)
   except error: # si error capturamos excep
     error2.append(servidor)
 print 'fin', servidor

Sólo para ver qué pasa.
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
lovita

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: hilos en python que tardan mucho
« Respuesta #2 en: 14 Marzo 2008, 09:46 »

Gracias, y ... siento lo del código, no se volverá a repetir.

Al ejecutar ahora el código, primero se imprimen rápida y ordenadamente todos los 'inicio' servidor, posteriormente y desordenadamente los 'fin' servidor, y en esto es lo que se lleva más tiempo, además, los 'fin' servidor se imprimen como en grupos de tres o cuatros seguidos se lleva un tiempo procesando y vuelve a imprimirse otro bloque, así hasta recorrer todos los servidores.  :o   
En línea
Ragnarok
Moderador Global
*****
Desconectado Desconectado

Mensajes: 4.227


Ver Perfil
Re: hilos en python que tardan mucho
« Respuesta #3 en: 14 Marzo 2008, 23:44 »

Entonces el problema no son los hilos, que se crean todos a la vez, sino el límite de conexiones, que dices que es 3 o 4. O eso es lo que deduzco de la traza, python lo he usado lo justo.
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats