Hilos que tardan mucho

Luis Orellana Orihuela luis.ore.ori en gmail.com
Mie Mar 19 11:31:09 CET 2008


Hola a todos de nuevo. Retomo el hilo de nuevo. Tenía el problema de
hilos que tardaban demasiado.

He probado a poner unos print en cada hilo para ver el comportamiento
del script:

import thread
....
...
...

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

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


Al ejecutarlo observo el siguiente comportamiento: 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. Entonces deduzco que el problema no son los
hilos, que se crean todos a la vez,
sino el límite de conexiones, que parece ser de  3 o 4. O eso es lo que
deduzco de la traza (seguramente mi razonamiento es erróneo). ¿Es esto
normal? ¿Hay alguna forma de controlarlo?
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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