آموزش رزبری پای پیکو با میکروپایتون بخش یازدهم: ایجاد ترد Thread

منبع :  دیجی اسپارک دسته بندی : اینترنت اشیا IOT کد خبر : 448081 1 سال قبل 512

اینکه ترد چیست و چرا در میکروپایتون از آن استفاده می‌کنیم، برمیگردد به دومین کارگاه آنلاین میکروپایتون که با تیمم به دنبال آخرین و به روز ترین کلاس ها برای یادگیری بودیم. اینکه آیا ترد Thread در میکروپایتون هم جایی دارد؟ در این آموزش به معرفی ترد Thread و روش استفاده از آن در برد رزبری پای پیکو با میکروپایتون میپردازیم. در ادامه آموزش ایجاد ترد Thread با مرجع تخصصی میکروپایتون به زبان فارسی، دیجی اسپارک همراه باشید.

آموزش برد پیکو pico بخش یازدهم ایجاد ترد Thread - دیجی اسپارک

 

ترد Thread

ما در طول یک کار چندین پروسه داریم که هر پروسه شامل اطلاعات و دیتا مربوط به برنامه ی در حال اجرا را دارد. هر پروسه ممکن است از چندین پروسه زیرلایه تر تشکیل شده باشد که یک سری تسک و وظایف را بایستی انجام دهند. حال تصور کنید پردازشگر بخواهد تمامی این پروسه ها را همزمان با یکدیگر اجرا کند! چه اتفاقی خواهد افتاد؟ برای اینکار بایستی از مفهوم Thread استفاده کنیم. ترد Thread در حقیقت یک بخش از برنامه است که CPU برنامه ها را از داخل ترد Thread تقسیم بندی کرده و در زمان های مختلف زمانی را به هر Thread اختصاص میدهد تا حالت همزمانی اجرای برنامه ها به وجود بیاید. پس زمانی که بخواهیم چندین تسک را به صورت همزمان انجام دهیم باید از قابلیت ترد Thread استفاده کنیم. اما در گوشه ی ذهن داشته باشید که این عملیات واقعا همزمان نیستند. اما CPU اینقدر زمان بندی را سریع بین تردهای مختلف انجام میدهد که به نظر این هم زمانی جلوه می‌کند.

اما CPU در پشت صحنه اجرای منظم و همزمان تردها را مدیریت می‌کند و به هر ترد thread یک زمان میدهد تا در طول آن زمان ترد تسک مورد نظر را اجرا کند. هنگامی که زمان اختصاص داده شده به ترد thread به پایان برسد، CPU ترد دیگری را اجرا می‌کند تا مجدد به همان Thread برسد و دستوراتش را اجرا کند. مهمترین کاری که تردها انجام میدهند این است که اگر پردازش های سنگین داشته باشیم، میتوانیم پردازش ها را در یک ترد اجرا کنیم و از فریز شدن و قفل شدن برنامه جلوگیری کنیم. در صورت استفاده از thread میتوانیم از هر دو هسته رزبری پای پیکو استفاده کنیم. در پایتون این قابلیت را داریم که یک یا چندین کار به صورت همزمان اجرا شوند. برای اینکار از ماژول _thread استفاده می‌شود. در زیر روش فراخوانی ترد آموزش داده شده است. بررسی کنید.

import _thread import time def th_func(delay, id):     while True:         time.sleep(delay)         print('Running thread %d' % id) for i in range(2):     _thread.start_new_thread(th_func, (i + 1, i))

متد ترد thread

 

 

ترد thread در رزبری پای پیکو

از نکات قابل توجه در برد رزبری پای پیکو دارا بودن دو هسته Core است. به این معنی که میتوانید به راحتی تسک های چند رشته ای multithreaded را به کمک ترد پیاده سازی کنید. اما بزرگترین چالش اینجاست که رزبری پای پیکو فاقد Operating system سیستم عامل است که بتواند چرخه های CPU را مدیریت کند به همین دلیل هر هسته فقط یک ترد را قبول می‌کند.

import machine import utime import _thread internal_led = machine.Pin(25, machine.Pin.OUT) def sec_thread():     while True:         print("task one")         utime.sleep(1) _thread.start_new_thread(sec_thread, ()) while True:     internal_led.toggle()     utime.sleep(0.25)
در صورت استفاده از Thread دو عمل در برنامه به صورت همزمان اجرا می‌شود. یک ترد با نام sec_thread ایجاد شده است که یک پیامی را هر ثانیه یک بار چاپ می‌کند. سپس ال ای دی داخلی پیکو به صورت تاگل جداگانه عمل می‌کند و هر دو تسک به درستی و بدون ایجاد تداخل در برنامه اجرا می‌شود.
ایجاد ترد Thread میکروپایتون با رزبری پیکو pico - دیجی اسپارک

 

مثال دوم برای ایجاد ترد Thread

در مثال دوم یک تسک برای ال ای دی در نظر گرفته شده است که با هر بار فعال شدن، ال ای دی ۱۰ بار به مدت  ۰٫۱ ثانیه چشمک زن شده و پس از پایان پیغام Endtask را نمایش میدهد.

 

مثال سوم برای ایجاد ترد Thread

در مثال سوم عملکرد thread به این صورت است که یکی از هسته ها هر ثانیه یک عدد زوج را چاپ می‌کند و هسته دوم هر دو ثانیه یک عدد فرد را چاپ می‌کند.

from time import sleep import _thread def core0_thread(): counter = 0 while True: print(counter) counter += 2 sleep(1) def core1_thread(): counter = 1 while True: print(counter) counter += 2 sleep(2) second_thread = _thread.start_new_thread(core1_thread, ()) core0_thread()

 

مثال سوم در ایجاد ترد Thread رزبری پیکو - دیجی اسپارک

 

بخش یازدهم آموزش رزبری پیکو pico ایجاد ترد Thread - دیجی اسپارک

 

وسایل مورد نیاز

رزبری پای پیکو Raspberry Pi PICO

 

جمع بندی لیدی پای

میکروپایتون به نسبت زبان جدیدی است و اگر بخواهیم عمیق تر به لایه های آن نفوذ کنیم نیاز به تمرین و صبوری دارد. بسیاری از مفاهیم جدید است و تماما وابسته به کلاس ها و متدها است تا بتوانیم به درستی از آن ها استفاده کنیم. در این آموزش به معرفی thread و مفهوم آن در Micropython با حل مثال پرداختیم که قطعا لازم و کافی نیست و بایستی ارتقا داده شود. رزبری پای پیکو دو هسته ای است و حالا میتوانیم با یادگیری ترد thread برای هر هسته یک تسک جدا تعریف کنیم که بدون دخالت در کارهای یکدیگر هر تسک به درستی اجرا شود و تاثیری در عملکرد یکدیگر نداشته باشند.

 

نوشته آموزش رزبری پای پیکو با میکروپایتون بخش یازدهم: ایجاد ترد Thread اولین بار در دیجی اسپارک پدیدار شد.

مشاهده این خبر در سایت مرجع