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.
def move_square():
# Move in a square path
while True:
arm.move_inc(100, 0, 0)
arm.move_inc(0, 100, 0)
arm.move_inc(-100, 0, 0)
arm.move_inc(0, 100, 0)
move_square_thread = Thread(move_square)
signal_tower.set_color(SignalTower.BLUE, SignalTower.BLINK)
# Run multiple threads simultaneously
def move_square():
# Move in a square path
while True:
arm.move_inc(100, 0, 0)
arm.move_inc(0, 100, 0)
arm.move_inc(-100, 0, 0)
arm.move_inc(0, 100, 0)
def lights():
while True:
# Turn on all LEDs
signal_tower.set_colors(SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON)
wait(0.25, SECONDS)
# Turn on just the red LED
signal_tower.set_colors(SignalTower.ON, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF)
wait(0.25, SECONDS)
move_square_thread = Thread(move_square)
lights_thread = Thread(lights)
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
Move the end effector, flash lights and display the x position at once
Stop blinking after 2 seconds
"""
def lights():
while True:
# Turn on all LEDs
signal_tower.set_colors(SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON)
wait(0.25, SECONDS)
# Turn on just the red LED
signal_tower.set_colors(SignalTower.ON, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF)
wait(0.25, SECONDS)
def display_x():
while True:
brain.clear_row()
brain.set_cursor(1, 1)
brain.print("X Position: {}".format(arm.get_x()))
wait(50, MSEC)
lights_thread = Thread(lights)
display_x_thread = Thread(display_x)
arm.move_to(200, 140, 210)
wait(2, SECONDS)
lights_thread.stop()