Python - Problema con hilos!!!

 
Vista:

Problema con hilos!!!

Publicado por mariela (1 intervención) el 31/01/2008 02:01:14
Hola es la primera vez que hagoooo una consulta en un foroo!!!!:
tengo un problema al trabajar con hilos espero q alguien me pueda ayudar !!!!, bue lo q estoy haciendo es procesar una cierta cantidad de paginas html de las cuales obtengo keywords,texto y enlaces,o sea que cada pagina representa un hilo y lo q quiero es agilizar el proceso y mi problema es que el metodo run nunca se ejecuta y esto me pasa hasta cuando ejecuto los ejemplos q encontré y si utilizo la sentencia join funciona pero es siempre secuencial y no veo la eficiencia ,......bue la ejecucion me da el siguiente resultado:

pag http://www.diveintopython.org/
hilo: 0
pag http://www.onlamp.com/python/
hilo: 1
pag http://www.python.org/download/
hilo: 2
pag http://docs.python.org/tut/
hilo: 3
pag http://en.wikipedia.org/wiki/Python
hilo: 4
pag http://en.wikipedia.org/wiki/Python_(programming_language)
hilo: 5
pag http://www.python.org/
hilo: 6
pag http://www.activestate.com/Products/activepython/
hilo: 7
pag http://xkcd.com/353/
hilo: 8
pag http://pythonline.com/
hilo: 9
-----FINNNNN-----------
>>> terminooooooo hilo: 2 ¿ porq recien se ejecuta ??????
terminooooooo hilo: 0
terminooooooo hilo: 6
terminooooooo hilo: 4
terminooooooo hilo: 9
terminooooooo hilo: 8
terminooooooo hilo: 7
terminooooooo hilo: 3
terminooooooo hilo: 5
terminooooooo hilo: 1

ahora le paso el codigo fuente:

class HiloProcesarPaginaHTML(threading.Thread):

def __init__(self,pag,i,resultado):

threading.Thread.__init__(self)
self.pag=pag
self.resultado=resultado
self.i=i

def run(self):

print 'hilo:',self.i
a=AnalizadorHtml(self.pag)

a.parserTodoHtml()

self.resultado['html'][self.pag]['keywords']=a.returnKeywords2()
self.resultado['html'][self.pag]['links']=a.returnLinks()
self.resultado['html'][self.pag]['texto']=a.returnTexto()

print 'terminooooooo hilo:',self.i

########################################
hilos=range(0,self.tam)
print self.pagPrinc
for p in range(self.tam):
pag=self.pagPrinc[p]
print 'pag',pag
hilos[p]=HiloProcesarPaginaHTML(pag,p,self.resultado)
hilos[p].start()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con hilos!!!

Publicado por Antonio Fernández Porrúa (3 intervenciones) el 03/01/2011 13:00:53
Te recomiendo es uso de procesos, sobre manera en tu caso en el que los hilos no se envían información de ningún tipo entre sí.

Pasando el código que envías a procesos, podría quedar así:

from pykiss import fork

def procesar_pagina(pag,i,resultado):
print 'Proceso:%s'%(i,)
a=AnalizadorHtml(pag)
a.parserTodoHtml()

print 'terminooooooo hilo:',i

return (a.returnKeywords2(), a.returnLinks(), a.returnTexto(), i)

def hacer_algo_con_el_retorno(retorno):
keywords, links, texto, i = retorno
...

control = fork.Control()

print self.pagPrinc
for p in range(self.tam):
pag=self.pagPrinc[p]
print 'pag',pag
control.fork_function(hacer_algo_con_el_retorno, procesar_pagina, pag, p, resultado)

Pero me falta código por ver, tendrás que adaptarlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar