धागे#

परिचय#

थ्रेड्स की मदद से रोबोट एक ही प्रोग्राम के भीतर एक साथ कई कार्य कर सकता है। ये मल्टीटास्किंग को सक्षम बनाते हैं, जिससे रोबोट एक ही समय में स्वतंत्र क्रियाएं कर सकता है।

नोट: थ्रेड के साथ इसका उपयोग करने के लिए आपको पहले एक फ़ंक्शन परिभाषित करना होगा।

कंस्ट्रक्टर – नए थ्रेड बनाएं और शुरू करें।

  • Thread – एक नया थ्रेड शुरू करता है जो मुख्य प्रोग्राम के साथ समानांतर में निर्दिष्ट फ़ंक्शन को चलाता है।

कार्य – चल रहे थ्रेड्स को नियंत्रित करें।

  • stop – मैन्युअल रूप से एक थ्रेड को रोकता है, पृष्ठभूमि व्यवहार को रोकने के लिए उपयोगी है।

निर्माता#

Thread#

Thread एक थ्रेड बनाता और शुरू करता है। थ्रेड बनाते समय, आप उसे नाम दे सकते हैं ताकि आवश्यकता न रहने पर उसे रोका जा सके।

उपयोग:

my_thread = Thread(my_function)

पैरामीटर

विवरण

my_thread

यह वैकल्पिक है। नए थ्रेड के लिए एक नाम।

my_function

पूर्व परिभाषित फ़ंक्शन का नाम।

नोट: किसी फ़ंक्शन को कॉल करने से हमेशा उसे परिभाषित किया जाना चाहिए।

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)

कार्रवाई#

stop#

stop थ्रेड को मैन्युअल रूप से रोकता है, जो तब उपयोगी होता है जब किसी कार्य की अब आवश्यकता नहीं होती है या जब किसी प्रोग्राम को थ्रेड्स को रीसेट करने की आवश्यकता होती है। एक बार थ्रेड बंद हो जाने पर, इसे पुनः आरंभ नहीं किया जा सकता है। इसे फिर से चलाने के लिए, आपको थ्रेड का उपयोग करके एक नया थ्रेड बनाना होगा।

उपयोग:

my_thread.stop()

पैरामीटर

विवरण

my_thread

पहले से शुरू किया गया थ्रेड ऑब्जेक्ट। यह वह नाम है जो थ्रेड को Thread का उपयोग करके बनाते समय दिया गया था।

"""
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()