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 originalresultado=0
bloqueo=Lock()
def aceptar_conexiones():
while True:
global bloqueo
# creamos el socket
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # usamos esta funcion para mantener en eschucha el puerto que queramos este caso 8000
serversocket.bind(('localhost', 8000))
# mantenemos en escucha el servidor
serversocket.listen(3)
# aceptamos la conexion
clientsocket, clientaddress = serversocket.accept()
print 'Conexion desde: ', clientaddress # escribimos la ip del cliente
global resultado
resultado = resultado + 1
print "Es la conexión numero:", resultado
Condition().acquire()
Condition().notify()
Condition().release()
def recivir_datos():
Condition().acquire()
Condition().wait() # Espera por los datos
print "***A la espera de datos***"
if resultado != 0:
for i in range(5):
data = clientsocket.recv(1024) # recibimos datos del cliente
print 'cliente %s' % data # ponemos en pantalla lo que nos a dicho el cliente
Condition().release()
t = Thread(target=aceptar_conexiones())
t.start()
t1 = Thread(target=recivir_datos())
t.start()
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