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