Νήματα#
Εισαγωγή#
Τα νήματα επιτρέπουν σε ένα ρομπότ να εκτελεί πολλαπλές εργασίες ταυτόχρονα μέσα στο ίδιο πρόγραμμα. Επιτρέπουν την εκτέλεση πολλαπλών εργασιών, επιτρέποντας στο ρομπότ να εκτελεί ανεξάρτητες ενέργειες ταυτόχρονα.
Σημείωση: Πρέπει πρώτα να ορίσετε μια συνάρτηση για να τη χρησιμοποιήσετε με ένα νήμα.
Κατασκευαστής – Δημιουργήστε και ξεκινήστε νέα νήματα.
Thread– Ξεκινά ένα νέο νήμα που εκτελεί την καθορισμένη συνάρτηση παράλληλα με το κύριο πρόγραμμα.
Ενέργεια – Έλεγχος των τρεχούμενων νημάτων.
stop– Διακόπτει ένα νήμα χειροκίνητα, χρήσιμο για την αναστολή της συμπεριφοράς στο παρασκήνιο.
Κατασκευαστής#
Thread#
Thread δημιουργεί και ξεκινά ένα νήμα. Όταν δημιουργείτε ένα νήμα, μπορείτε να το ονομάσετε για να το σταματήσετε όταν δεν χρειάζεται πλέον.
Χρήση:
my_thread = Thread(my_function)
Παράμετροι |
Περιγραφή |
|---|---|
|
Προαιρετικό. Ένα όνομα για το νέο νήμα. |
|
Το όνομα μιας προηγουμένως ορισμένης συνάρτησης. |
Σημείωση: Μια συνάρτηση πρέπει πάντα να ορίζεται πριν την κλήση της.
# 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)
Δράση#
stop#
Η εντολή stop σταματά ένα νήμα χειροκίνητα, κάτι που είναι χρήσιμο όταν μια εργασία δεν χρειάζεται πλέον ή όταν ένα πρόγραμμα χρειάζεται να επαναφέρει τα νήματα. Μόλις διακοπεί ένα νήμα, δεν μπορεί να επανεκκινηθεί. Για να το εκτελέσετε ξανά, πρέπει να δημιουργήσετε ένα νέο νήμα χρησιμοποιώντας το Thread.
Χρήση:
my_thread.stop()
Παράμετροι |
Περιγραφή |
|---|---|
|
Ένα αντικείμενο νήματος που είχε ξεκινήσει προηγουμένως. Αυτό είναι το όνομα που εκχωρήθηκε κατά τη δημιουργία του νήματος χρησιμοποιώντας |
"""
Run multiple threads simultaneously
Turn right, play a sound and display heading at once
Stop playing sounds after 2 seconds
"""
def lights():
while True:
optical_sensor.set_light(LEDStateType.ON)
wait(0.5, SECONDS)
optical_sensor.set_light(LEDStateType.OFF)
wait(0.5, SECONDS)
def display_heading():
while True:
brain.screen.clear_row()
brain.screen.set_cursor(1, 1)
brain.screen.print("Heading: {}".format(drivetrain.heading(DEGREES)))
wait(50, MSEC)
lights_thread = Thread(lights)
display_heading_thread = Thread(display_heading)
drivetrain.turn(RIGHT)
wait(2, SECONDS)
lights_thread.stop()