Foros del Web » Programando para Internet » Python »

Problema threads

Estas en el tema de Problema threads en el foro de Python en Foros del Web. Bueno, como no he conseguido solucionar el problema con los procesos vuelvo a los threads.El caso es que uso la funcion condition pero es como ...
  #1 (permalink)  
Antiguo 07/07/2014, 18:41
 
Fecha de Ingreso: noviembre-2013
Mensajes: 61
Antigüedad: 10 años, 5 meses
Puntos: 0
Problema threads

Bueno, como no he conseguido solucionar el problema con los procesos vuelvo a los threads.El caso es que uso la funcion condition pero es como si no lo consiguiera bloquear el hilo.El codigo es para un server.En que falla el script?


Código Python:
Ver original
  1. resultado=0
  2. bloqueo=Lock()
  3.  
  4. def  aceptar_conexiones():
  5.     while True:
  6.         global bloqueo
  7.         # creamos el socket    
  8.         serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)     # usamos esta funcion para mantener en eschucha el puerto que queramos este caso 8000
  9.         serversocket.bind(('localhost', 8000))
  10.         # mantenemos en escucha el servidor
  11.         serversocket.listen(3)
  12.         # aceptamos la conexion
  13.         clientsocket, clientaddress = serversocket.accept()
  14.         print 'Conexion desde: ', clientaddress # escribimos la ip del cliente
  15.         global resultado
  16.         resultado = resultado + 1
  17.         print "Es la conexión numero:", resultado
  18.         Condition().acquire()
  19.         Condition().notify()
  20.         Condition().release()
  21.                    
  22. def recivir_datos():
  23.     Condition().acquire()
  24.     Condition().wait() # Espera por los datos
  25.     print "***A la espera de datos***"
  26.     if resultado != 0:
  27.         for i in range(5):
  28.             data = clientsocket.recv(1024) # recibimos datos del cliente
  29.             print 'cliente %s' % data # ponemos en pantalla lo que nos a dicho el cliente
  30.     Condition().release()
  31.            
  32. t = Thread(target=aceptar_conexiones())
  33. t.start()
  34. t1 = Thread(target=recivir_datos())
  35. t.start()
  36.  
  37. clientsocket.close() # cerramos el socket

Error:

Cita:
Traceback (most recent call last):
File "D:\Desktop\Servidor socket.py", line 39, in <module>
t = Thread(target=aceptar_conexiones())
File "D:\Desktop\Servidor socket.py", line 25, in aceptar_conexiones
Condition().notify()
RuntimeError: cannot notify on un-acquired lock

Última edición por roberkas98; 08/07/2014 a las 05:22

Etiquetas: procesos, servidor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:52.