Konular#
giriiş#
İş parçacıkları, bir robotun aynı program içinde birden fazla görevi eş zamanlı olarak çalıştırmasına olanak tanır. Çoklu görev yürütmeyi mümkün kılarak robotun aynı anda bağımsız eylemler gerçekleştirmesini sağlarlar.
Not: Bunu bir iş parçacığıyla kullanmak için önce bir fonksiyon tanımlamanız gerekir.
Yapıcı fonksiyon – Yeni iş parçacıkları oluşturur ve başlatır.
Thread– Belirtilen işlevi ana programla paralel olarak çalıştıran yeni bir iş parçacığı başlatır.
Eylem – Çalışan iş parçacıklarını kontrol et.
stop– Bir iş parçacığını manuel olarak durdurur, arka plan davranışını durdurmak için kullanışlıdır.
Yapıcı#
Thread#
Thread bir iş parçacığı oluşturur ve başlatır. Bir iş parçacığı oluşturduğunuzda, artık ihtiyaç duyulmadığında durdurmak için ona bir isim verebilirsiniz.
Kullanım:
my_thread = Thread(my_function)
Parametreler |
Tanım |
|---|---|
|
İsteğe bağlı. Yeni iş parçacığı için bir isim. |
|
Daha önce tanımlanmış bir fonksiyonun adı. |
Not: Bir fonksiyon, çağrılmadan her zaman önce tanımlanmalıdır.
# 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)
Aksiyon#
stop#
stop , bir iş parçacığını manuel olarak durdurur; bu, bir göreve artık ihtiyaç duyulmadığında veya bir programın iş parçacıklarını sıfırlaması gerektiğinde kullanışlıdır. Bir iş parçacığı durdurulduktan sonra yeniden başlatılamaz. Tekrar çalıştırmak için Thread kullanarak yeni bir iş parçacığı oluşturmalısınız.
Kullanım:
my_thread.stop()
Parametreler |
Tanım |
|---|---|
|
Daha önce başlatılmış bir iş parçacığı nesnesi. Bu, iş parçacığı |
"""
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()