Trapos#

Introducción#

Los subprocesos permiten que un robot ejecute múltiples tareas simultáneamente dentro del mismo programa. Facilitan la multitarea, permitiendo que el robot realice acciones independientes simultáneamente.

Nota: Debes primero definir una función para usarla con un hilo.

Constructor – Crea e inicia nuevos hilos.

  • Hilo – Inicia un nuevo hilo que ejecuta la función especificada en paralelo con el programa principal.

Acción – Controlar hilos en ejecución.

  • stop – Detiene un hilo manualmente, útil para detener el comportamiento en segundo plano.

Constructor#

Hilo#

Thread crea e inicia un hilo. Al crear un hilo, puedes nombrarlo para gestionarlo individualmente en tu proyecto.

Uso:

mi_hilo = Hilo(mi_función)

Parámetros

Descripción

mi_hilo

Opcional. Un nombre para el nuevo hilo.

mi_función

El nombre de una función definida previamente.

Nota: Una función siempre debe definirse antes de ser llamada.

# Drive forward while blinking screen
def blink_screen():
    while True:
        brain.screen.clear_screen(Color.RED)
        wait(0.5, SECONDS)
        brain.screen.clear_screen()
        wait(0.5, SECONDS)

blink_screen_thread = Thread(blink_screen)
drivetrain.drive(FORWARD)

# Run multiple threads simultaneously
# Turn right, blink screen at once
def blink_screen():
    while True:
        brain.screen.clear_screen(Color.RED)
        wait(0.5, SECONDS)
        brain.screen.clear_screen()
        wait(0.5, SECONDS)

def turning():
    drivetrain.turn(RIGHT)

blink_screen_thread = Thread(blink_screen)
turning_thread = Thread(turning)

Acción#

detener#

stop detiene un hilo manualmente, lo cual es útil cuando una tarea ya no es necesaria o cuando un programa necesita reiniciar o reasignar hilos. Una vez detenido un hilo, no se puede reiniciar. Para volver a ejecutarlo, debe crear un nuevo hilo usando Thread.

Uso:

mi_hilo.stop()

Parámetros

Descripción

mi_hilo

Un objeto de hilo iniciado previamente. Este es el nombre asignado al crear el hilo con Thread.

"""
Run multiple threads simultaneously
Turn right, play a sound and display heading at once
Stop playing sounds after 2 seconds
"""
def sound():
    while True:
        brain.play_sound(SoundType.ALARM)
        wait(0.5, SECONDS)

def display_heading():
    while True:
        brain.screen.clear_row()
        brain.screen.set_cursor(1, 1)
        brain.screen.print("Heading: {}".format(brain_inertial.orientation(YAW)))
        wait(50, MSEC)

sound_thread = Thread(sound)     
display_heading_thread = Thread(display_heading)
drivetrain.turn(RIGHT)

wait(2, SECONDS)
sound_thread.stop()