Quiero ejecutar un bucle en mi script mientras el usuario no ha ingresado nada. Pero cuando han ingresado algo, quiero que el bucle se rompa.
El problema que estoy teniendo actualmente es que cuando uso la función input()
, el script se detendrá y esperará una entrada, pero quiero ejecutar otra parte del script mientras espero la entrada del usuario.
He intentado usar try:
con un raw_input()
:
while True:
try:
print('SCAN BARCODE')
userInput= raw_input()
#doing something with input
except:
#run this while there is no input
Con esto, encuentro que lo que esté en except:
siempre se ejecutará, pero no se ejecutará try:
incluso cuando haya una entrada del usuario. Si cambio raw_input()
a input()
, el script solo espera en input()
y no ejecuta nada en except:
.
¿Cómo logro lo que busco?
3 respuestas
Puedes usar hilos de python:
from threading import Thread
import time
thread_running = True
def my_forever_while():
global thread_running
start_time = time.time()
# run this while there is no input
while thread_running:
time.sleep(0.1)
if time.time() - start_time >= 5:
start_time = time.time()
print('Another 5 seconds has passed')
def take_input():
user_input = input('Type user input: ')
# doing something with the input
print('The user input is: ', user_input)
if __name__ == '__main__':
t1 = Thread(target=my_forever_while)
t2 = Thread(target=take_input)
t1.start()
t2.start()
t2.join() # interpreter will wait until your process get completed or terminated
thread_running = False
print('The end')
En mi ejemplo, tiene 2 subprocesos, el primer subproceso está activo y ejecuta el código hasta que tenga alguna entrada del usuario, el subproceso 2 está esperando alguna entrada del usuario. Después de obtener la entrada de usuario, los hilos 1 y 2 se detendrán.
Es simple usar valores booleanos de bandera
Flag = True
while Flag:
try:
Print('scan bar code')
User_inp = input()
if User_inp != '':
Flag = False
Except:
Print('except part')
Le sugiero que busque select
Le permite verificar si un descriptor de archivo es ready
para la operación de lectura / escritura / espera
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.