Threads y concurrencia
Jose Gomez-Dans
jgomezdans en gmail.com
Jue Ago 2 09:10:46 CEST 2007
Hola,
Tengo un programa que descarga ficheros de un FTP y los procesa. Los
ficheros son grandes (cientos de MB, tardan varios minutos en bajar),
y el procesado es bastante pesado. Como no es crítico tener los datos
procesados en tiempo real, he decidido meter el procesado en un hilo,
para que se vaya haciendo de fondo mientras me sigo bajando datos por
otro lado. Hay algo que no funciona, porque el servidor FTP me da
timeouts, y el procesado no es concurrente, sino que secuencial.
La clase hilo es muy sencilla:
class MyThread ( threading.Thread):
def __init__ ( self, opciones):
self.opciones = opciones
threading.Thread.__init__ ( self )
def run ( self ):
#Procesar cosas blah blah blah
La lógica del programa principal viene siendo un bucle en el servidor
FTP remoto. Para cada fichero que se va a descargar, éste se descarga,
se lanza el hilo del procesado una vez lo hemos descargado, y vuelta a
empezar.
El hilo para procesar cada fichero se lanza de la siguiente manera:
MyThread( opciones).start()
El proceso funciona, pero me da que no es concurrente. Hay algo obvio
de lo que me estoy olvidando?
Gracias!
Más información sobre la lista de distribución Python-es