| 
	
		|  Autor | Tema: [PYTHON] Hilos  (Leído 10,438 veces) |  
	| 
			| 
					
						| EvilGoblin 
								       
								
								 Desconectado 
								Mensajes: 2.323
								
								 
								YO NO LA VOTE!
								
								
								
								
								
								   | 
 
Estoy "practicando" hilos en Python para ganar velocidad en algunas actividades entonces me doy cuenta que no pueden acceder al mismo recurso los 2 hilos al a vez (cosa que no pasa en C++) ejemplo: import timefrom threading import Thread
 
 id = 1
 class Hilo( Thread ):
 
 def __init__( self, num, nom ):
 
 Thread.__init__(self)
 self.dato = num
 self.nombre = nom
 
 def run( self ):
 for l in range( 10 ):
 print( self.nombre + " ID " + str( id ) )
 id = id + 1
 def test():
 hilo1 = Hilo( 1, "Hilo 1" )
 hilo2 = Hilo( 2, "Hilo 2" )
 hilo2.start()
 hilo1.start()
 hilo1.join()
 hilo2.join()
 
 if __name__ == "__main__":
 test()
 
Me da error al acceder al ID el segundo hilo entonces queria consultar que forma tengo de acceder a una variable, que pueda actualizarla desde varios hilos como agregar cadenas en un array.  
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 Experimental Serial Lain [Linux User] |  |  |  | 
			| 
					
						| bizco 
								 
								
								 Desconectado 
								Mensajes: 698
								
								
								
								
								
								   | 
 
busca sobre sincronizacion de threads, esto es lo correcto sea el lenguaje que sea. 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Novlucker 
								Ninja y 
								Colaborador
								      Desconectado 
								Mensajes: 10.683
								 
								Yo que tu lo pienso dos veces
								
								
								
								
								
								   | 
 
De aquí aprendí yo sobre threads   , vete directo a la parte de "Sincronización" que lo tiene muy bien explicado Saludos |  
						| 
								|  |  
								|  |  En línea | 
 
 Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
 Albert Einstein |  |  |  | 
			| 
					
						| EvilGoblin 
								       
								
								 Desconectado 
								Mensajes: 2.323
								
								 
								YO NO LA VOTE!
								
								
								
								
								
								   | 
 
yo justo estaba leyendohttp://chuwiki.chuidiang.org/index.php?title=Hilos_en_python que tmb explican bien, ahora reviso tu link. asi me queda mas claro Estaba intentando la sincronizacion, es bastante alboroto xD.. espero q me quede un poco mas en claro Igual no necesito hacer nada de semaforos, ni nada raro. Ya que van a ser tareas simples, Pero que con varios hilos las hago bastante mas rapido ya encontre la solucion era usar  para poder modificarlo desde el hilo =P Suerte! y Gracias! |  
						| 
								|  |  
								|  |  En línea | 
 
 Experimental Serial Lain [Linux User] |  |  |  | 
			| 
					
						| Novlucker 
								Ninja y 
								Colaborador
								      Desconectado 
								Mensajes: 10.683
								 
								Yo que tu lo pienso dos veces
								
								
								
								
								
								   | 
 
Ok, pero poner una variable global no va a impedir que pueda haber errores si los dos hilos intentan acceder a la misma vez   Las variables globales, son iguales por ejemplo a las static de otros lenguajes, son variables independientes de un objeto, pero solo eso. En defintiva, para esta función que estas haciendo no hay problemas, pero si pones los hilos a hacer algo más "trabajoso" puede que te de problemas en la sincronización. Trata con más hilos y más repeticiones en el contador y verás Hilo 3 ID 272Hilo 3 ID 273Hilo 3 ID 274Hilo 5 ID 275Hilo 5 ID 276Hilo 5 ID 277Hilo 5 ID 278Hilo 4 ID 272Hilo 4 ID 273Hilo 4 ID 274Hilo 4 ID 275Hilo 3 ID 275Hilo 3 ID 276
 Saludos |  
						| 
								|  |  
								| « Última modificación:  8 Julio 2010, 19:38 pm por Novlucker » |  En línea | 
 
 Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
 Albert Einstein |  |  |  | 
			| 
					
						| EvilGoblin 
								       
								
								 Desconectado 
								Mensajes: 2.323
								
								 
								YO NO LA VOTE!
								
								
								
								
								
								   | 
 
Ok, igual estoy leyendo sobre los semaforos y sincronizacion xD
 Mi idea es esto
 
 Si creo un bruteforce para SQL (blind)
 
 poner a crackear 1 x 1 letra por letra. tardaria bastante, mi intencion es usar hilos para poder crackear todas las letras a la vez
 
 asi que solo voy a usar algunos variables para saber si termino y escribir un array asi que no creo que tenga muchos problemas.
 
 Lo hago yo para aprender y tener mas control sobre lo q hago. ^^
 |  
						| 
								|  |  
								|  |  En línea | 
 
 Experimental Serial Lain [Linux User] |  |  |  | 
			| 
					
						| Novlucker 
								Ninja y 
								Colaborador
								      Desconectado 
								Mensajes: 10.683
								 
								Yo que tu lo pienso dos veces
								
								
								
								
								
								   | 
 
Esta bien, yo te lo decía para que lo tengas presente, ya que si no le pones control a los diferentes hilos, "el que entra primero gana", entonces puede que no estes donde crees que estas   Sobre tu código, supongo que te refieres a ir generando las "claves" y hacer GET a la web, porque es más rápido hacer GET con muchos hilos, que hacerlo con solo uno   Saludos |  
						| 
								|  |  
								|  |  En línea | 
 
 Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
 Albert Einstein |  |  |  | 
			| 
					
						| EvilGoblin 
								       
								
								 Desconectado 
								Mensajes: 2.323
								
								 
								YO NO LA VOTE!
								
								
								
								
								
								   | 
 
Claro, son varios los q estoy haciendo
 
 uno que haga un GET otro POST otro User-agent
 
 estoy probando varios ^^, solo para taradear, no saco info. Estoy probando las limitaciones de esta tecnica
 |  
						| 
								|  |  
								|  |  En línea | 
 
 Experimental Serial Lain [Linux User] |  |  |  | 
			| 
					
						| Debci 
								Wiki  Desconectado 
								Mensajes: 2.021
								
								 
								Actualizate o muere!
								
								
								
								
								
								     | 
 
En java sonde esas cosas que son correctas, pero si no lo haces, no se nota en aplicaciones "normales" pero como compliques un poco la historia ocurren cosas extrañas xD
 Saludos
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| hackstyle18 
								
								 Desconectado 
								Mensajes: 14
								
								
								
								
								
								   | 
 
prueba poner esta parte asin:         hilo1 = Hilo( 1, "Hilo 1" )hilo2 = Hilo( 2, "Hilo 2" )
 hilo2.start()
 hilo2.join()
 hilo1.start()
 
lo que ace el join() es que asta que no termine un thread  en este caso el hilo2, no deja que empieze el hilo1 , asin creo que no te tiene que dar error porke no intentaran acceder los 2 al mismo tiempo   nose si me equivoko o no, yo soy novato en esto tambien ^^ Saludos |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
   |