Siūlai#
Įvadas#
Gijos leidžia robotui vienu metu vykdyti kelias užduotis toje pačioje programoje. Jos įgalina daugiaprogramį darbą, leisdamos robotui atlikti nepriklausomus veiksmus tuo pačiu metu.
Pastaba: Norėdami naudoti funkciją su gijos, turite pirmiausia apibrėžti ją.
Konstruktorius – Kurkite ir pradėkite naujas gijas.
Threadgijos – Pradeda naują giją, kuri vykdo nurodytą funkciją lygiagrečiai su pagrindine programa.
Veiksmas – Valdykite veikiančias gijas.
stop– Sustabdo giją rankiniu būdu, naudinga norint sustabdyti foninį elgesį.
Konstruktorius#
Thread#
Thread gija sukuria ir pradeda giją. Sukūrę giją, galite ją pavadinti, kad sustabdytumėte ją, kai jos nebereikės.
Naudojimas:
my_thread = Thread(my_function)
Parametrai |
Aprašymas |
|---|---|
|
Pasirinktinai. Naujo siūlelio pavadinimas. |
|
Anksčiau apibrėžtos funkcijos pavadinimas. |
Pastaba: Funkcija visada turi būti apibrėžta prieš ją iškviečiant.
# Drive forward while blinking lights
def blink_lights():
while True:
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLUE)
wait(0.5, SECONDS)
blink_lights_thread = Thread(blink_lights)
robot.move_at(0)
# Run multiple threads simultaneously
# Turn right, blink lights and display heading at once
def blink_lights():
while True:
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
def display_heading():
while True:
robot.screen.clear_row()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Heading: {robot.inertial.get_yaw()}")
wait(50, MSEC)
blink_lights_thread = Thread(blink_lights)
display_heading_thread = Thread(display_heading)
robot.turn(RIGHT)
Veiksmas#
stop#
stop rankiniu būdu sustabdo giją, o tai naudinga, kai užduotis nebereikalinga arba kai programai reikia iš naujo nustatyti gijas. Sustabdžius giją, jos negalima paleisti iš naujo. Norėdami ją vėl paleisti, turite sukurti naują giją naudodami Thread.
Naudojimas:
my_thread.stop()
Parametrai |
Aprašymas |
|---|---|
|
Anksčiau paleistas gijos objektas. Tai pavadinimas, priskirtas kuriant giją naudojant |
"""
Run multiple threads simultaneously
Turn right, blink lights and display heading at once
Stop blinking lights after 2 seconds
"""
def blink_lights():
while True:
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
wait(0.5, SECONDS)
def display_heading():
while True:
robot.screen.clear_row()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Heading: {robot.inertial.get_yaw()}")
wait(50, MSEC)
blink_lights_thread = Thread(blink_lights)
display_heading_thread = Thread(display_heading)
robot.turn(RIGHT)
wait(2, SECONDS)
blink_lights_thread.stop()