elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [PYTHON] Hilos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [PYTHON] Hilos  (Leído 8,979 veces)
EvilGoblin


Desconectado Desconectado

Mensajes: 2.323


YO NO LA VOTE!


Ver Perfil
[PYTHON] Hilos
« en: 8 Julio 2010, 18:30 pm »

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:

Código:
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 Desconectado

Mensajes: 698


Ver Perfil
Re: [PYTHON] Hilos
« Respuesta #1 en: 8 Julio 2010, 18:44 pm »

busca sobre sincronizacion de threads, esto es lo correcto sea el lenguaje que sea.


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [PYTHON] Hilos
« Respuesta #2 en: 8 Julio 2010, 19:10 pm »

De aquí aprendí yo sobre threads :P, 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 Desconectado

Mensajes: 2.323


YO NO LA VOTE!


Ver Perfil
Re: [PYTHON] Hilos
« Respuesta #3 en: 8 Julio 2010, 19:14 pm »

yo justo estaba leyendo
http://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

Código:
global id
para poder modificarlo desde el hilo =P

Suerte!
y Gracias!
En línea

Experimental Serial Lain [Linux User]
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [PYTHON] Hilos
« Respuesta #4 en: 8 Julio 2010, 19:32 pm »

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
Código
  1. Hilo 3 ID 272
  2. Hilo 3 ID 273
  3. Hilo 3 ID 274
  4. Hilo 5 ID 275
  5. Hilo 5 ID 276
  6. Hilo 5 ID 277
  7. Hilo 5 ID 278Hilo 4 ID 272
  8. Hilo 4 ID 273
  9. Hilo 4 ID 274
  10. Hilo 4 ID 275Hilo 3 ID 275
  11. 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 Desconectado

Mensajes: 2.323


YO NO LA VOTE!


Ver Perfil
Re: [PYTHON] Hilos
« Respuesta #5 en: 8 Julio 2010, 20:13 pm »

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 Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [PYTHON] Hilos
« Respuesta #6 en: 8 Julio 2010, 20:19 pm »

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 :P

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 :P

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 Desconectado

Mensajes: 2.323


YO NO LA VOTE!


Ver Perfil
Re: [PYTHON] Hilos
« Respuesta #7 en: 8 Julio 2010, 20:34 pm »

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 Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: [PYTHON] Hilos
« Respuesta #8 en: 8 Julio 2010, 21:23 pm »

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 Desconectado

Mensajes: 14


Ver Perfil
Re: [PYTHON] Hilos
« Respuesta #9 en: 14 Julio 2010, 01:27 am »

prueba poner esta parte asin:

Código:
        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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hilos en python algo que no entiendo
Scripting
eliander20 2 3,116 Último mensaje 21 Mayo 2017, 04:44 am
por tincopasan
Problema con python, multi-hilos y mysql
Scripting
zagk 0 2,414 Último mensaje 29 Junio 2017, 22:46 pm
por zagk
Python ayuda hilos para hacer ping a todas las ips
Scripting
MetaNoia 0 3,491 Último mensaje 24 Noviembre 2019, 22:08 pm
por MetaNoia
Hilos
Programación C/C++
digimikeh 4 3,340 Último mensaje 9 Julio 2020, 17:19 pm
por digimikeh
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines