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 – kurti ir pradėti naujas gijas.
Threadgijos – Pradeda naują giją, kuri vykdo nurodytą funkciją lygiagrečiai su pagrindine programa.
Veiksmas – valdyti 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 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)
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, 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()