Autor
|
Tema: [PYTHON] Hilos (Leído 9,091 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 time from 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 leyendo http://chuwiki.chuidiang.org/index.php?title=Hilos_en_pythonque 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 272 Hilo 3 ID 273 Hilo 3 ID 274 Hilo 5 ID 275 Hilo 5 ID 276 Hilo 5 ID 277 Hilo 5 ID 278Hilo 4 ID 272 Hilo 4 ID 273 Hilo 4 ID 274 Hilo 4 ID 275Hilo 3 ID 275 Hilo 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
|
|
|
|
|
|