04-07-2017, 09:59 PM
Hola a todos una vez mas, me esta gustando mucho este lenguaje de programacion! el motivo esta vez es referente a un problema con los thread o multihilos. Mi problema es sencillo pero a la vez complicado, ya que he buscado en varios lugares pero no encuentro la solución o simplemente no la entiendo.
La circunstancia es la siguiente:
Tengo dos hilos ejecutándose simultáneamente y quiero que uno de los hilos se pause durante un tiempo cuando el otro hilo lo pida. Utilizo la librería “thread” de python y he estado leyendo e intentando hacer ejemplos con las funciones “lock”, “event” y “condition” pero no las entiendo. Lo mas que he hecho ha sido parar la función que no quiero que se pare.
Utilizo windows 10 con python 2.7 y el ide es el que viene con python por defecto. Aquí os dejo un trozo de código de uno de los ejemplos que he estado trabajando para aprender, ya que luego lo quiero extrapolar a un script mayor que estoy haciendo.
Quiero que desde la función “letras” pueda pausar la función “números” durante unos cinco segundos pero sin parar la función letras.
Muchas gracias una vez mas por vuestra atención. Saludos
La circunstancia es la siguiente:
Tengo dos hilos ejecutándose simultáneamente y quiero que uno de los hilos se pause durante un tiempo cuando el otro hilo lo pida. Utilizo la librería “thread” de python y he estado leyendo e intentando hacer ejemplos con las funciones “lock”, “event” y “condition” pero no las entiendo. Lo mas que he hecho ha sido parar la función que no quiero que se pare.
Utilizo windows 10 con python 2.7 y el ide es el que viene con python por defecto. Aquí os dejo un trozo de código de uno de los ejemplos que he estado trabajando para aprender, ya que luego lo quiero extrapolar a un script mayor que estoy haciendo.
Quiero que desde la función “letras” pueda pausar la función “números” durante unos cinco segundos pero sin parar la función letras.
Código:
import threading
import time
def letras(evento):
abecedario = ['a','b','c','d','e','f','g','h','i','j']
for i in range(len(abecedario)):
if abecedario[i] == 'c':
# Aqui es donde quiero detener el otro hilo "numeros" durante
# unos 5 segundos
else:
print abecedario[i]
time.sleep(1)
def numeros(evento):
numbers= [1,2,3,4,5,6,7,8,9,10]
for j in range(len(numbers)):
print numbers[j]
time.sleep(1)
if __name__ == "__main__" :
evento = threading.Event()
hilo1 = threading.Thread(target=letras, args=(evento,))
hilo2 = threading.Thread(target=numeros, args=(evento,))
hilo1.daemon = True
hilo1.start()
hilo2.daemon = True
hilo2.start()
Muchas gracias una vez mas por vuestra atención. Saludos