آموزش همزمانی در برنامه نویسی پایتون _ مقدمه

3 سال پیش

آموزش همزمانی در برنامه نویسی پایتون _ مقدمه

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش همزمانی در برنامه نویسی پایتون خواهیم پرداخت.

در این درس، ما مفهوم همزمانی را در پایتون درک خواهیم کرد و با رشته ها و فرایندهای مختلف آشنا خواهیم شد.

پیشنهاد ویژه : آموزش طراحی وب سایت با پایتون

همزمانی چیست؟
به عبارت ساده تر، همزمانی (Concurrency) وقوع دو یا چند رویداد به طور همزمان است. همزمانی یک پدیده طبیعی است زیرا بسیاری از حوادث همزمان و در هر زمان مشخص اتفاق می افتند.

از نظر برنامه ریزی، همزمانی زمانی است که دو کار در اجرا با هم همپوشانی داشته باشند. با برنامه نویسی همزمان، می توان عملکرد برنامه ها و سیستم های نرم افزاری ما را بهبود بخشید ، زیرا ما می توانیم به طور همزمان با درخواست ها مقابله کنیم تا اینکه منتظر تکمیل یک درخواست قبلی باشیم.

بررسی تاریخی همزمانی

نکات زیر بررسی مختصر تاریخی از همزمانی را به ما ارائه می دهد –

 

مفهوم راه آهن

همزمانی با مفهوم راه آهن ارتباط نزدیک دارد. با استفاده از راه آهن، نیاز به اداره چندین قطار در همان سیستم راه آهن وجود داشت به گونه ای که هر قطار با خیال راحت به مقصد برسد.

محاسبات همزمان در دانشگاه

علاقه به همزمانی علوم کامپیوتر با مقاله تحقیقی منتشر شده توسط Edsger W. Dijkstra در سال ۱۹۶۵ آغاز شد. در این مقاله ، وی مسئله محرومیت متقابل، یعنی ویژگی کنترل همزمان را شناسایی و حل کرد.

همزمانی سطح بالا

در چند وقت اخیر، برنامه نویسان به دلیل معرفی موارد ابتدایی همزمانی سطح بالا ، در حال دریافت راه حل های همزمان هستند.

همزمانی بهتر با زبان های برنامه نویسی

زبان های برنامه نویسی مانند Google’s Golang ، Rust و Python تحولات خارق العاده ای را در زمینه هایی ایجاد کرده اند که به ما کمک می کند راه حل های همزمان بهتری داشته باشیم.

رشته و چند رشته ای چیست؟

رشته (Thread) کوچکترین واحد اجرا است که می تواند در سیستم عامل انجام شود. این خود یک برنامه نیست بلکه درون یک برنامه اجرا می شود. به عبارت دیگر، رشته ها از یکدیگر مستقل نیستند. هر رشته بخش کد، بخش داده و غیره را با سایر رشته ها به اشتراک می گذارد. آنها همچنین به عنوان فرآیندهای سبک شناخته می شوند.

یک رشته از اجزای زیر تشکیل شده است –

  • شمارنده برنامه که از آدرس دستورالعمل بعدی قابل اجرا تشکیل شده است
  • پشته
  • مجموعه ثبت ها
  • یک شناسه بی مانند

از طرف دیگر، چند رشته ای توانایی CPU در مدیریت استفاده از سیستم عامل با اجرای همزمان چندین رشته است. ایده اصلی چند رشته ای دستیابی به موازی کاری با تقسیم یک فرآیند به چندین رشته است. مفهوم چند رشته ای را می توان با کمک مثال زیر درک کرد.

 

مثال

فرض کنید ما فرایند خاصی را اجرا می کنیم که در آن MS Word را باز می کنیم تا محتوا را در آن تایپ کنیم. یک موضوع برای باز کردن MS Word اختصاص داده می شود و یک موضوع دیگر برای تایپ کردن مطالب در آن لازم است. و اکنون، اگر بخواهیم موجود را ویرایش کنیم برای انجام وظیفه ویرایش و موارد دیگر به یک موضوع دیگر نیاز است.

 

 

پردازش و پردازش چندگانه چیست؟

Aprocessis به عنوان یک موجودیت تعریف شده است، که واحد اصلی کار برای اجرا در سیستم را نشان می دهد. به زبان ساده ، ما برنامه های رایانه ای خود را در یک فایل متنی می نویسیم و وقتی این برنامه را اجرا می کنیم، به فرایندی تبدیل می شود که تمام وظایف ذکر شده در برنامه را انجام می دهد. در طول چرخه عمر فرآیند، مراحل مختلفی را شروع می کند – شروع، آماده، در حال اجرا، انتظار و خاتمه.

نمودار زیر مراحل مختلف یک فرآیند را نشان می دهد –

Multiprocessing

یک فرآیند می تواند فقط یک رشته داشته باشد، به آن موضوع اولیه می گویند، یا چندین رشته دارای مجموعه ای از ثبات ها ، شمارنده برنامه و پشته های خاص خود هستند. نمودار زیر تفاوت را به ما نشان می دهد

 

Multiprocessing One

 

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

 

Multiprocessing Two

 

زبان پایتون یکی از محبوب ترین زبان های برنامه نویسی است. موارد زیر چند دلیل است که آن را برای برنامه های همزمان مناسب می کند –

Syntactic sugar

Syntactic sugar نحوی است که در یک زبان برنامه نویسی وجود دارد که برای سهولت در خواندن یا بیان آن طراحی شده است. این زبان را برای استفاده انسان “شیرین تر” می کند: چیزها را می توان با وضوح بیشتری، مختصر تر، یا در سبک دیگری بر اساس ترجیح بیان کرد. پایتون با روش های Magic ارائه می شود که می توان آنها را تعریف کرد تا بر روی اشیا عمل کنند. این روشهای Magic به عنوان Syntactic sugar استفاده می شوند و محدود به کلمات کلیدی قابل فهم تر هستند.

جامعه بزرگ

زبان پایتون شاهد یک میزان پذیرش گسترده در میان دانشمندان داده و ریاضی دانان است که در زمینه هوش مصنوعی، یادگیری ماشین، یادگیری عمیق و تجزیه و تحلیل کمی کار می کنند.

API های مفید برای برنامه نویسی همزمان

Python 2 و ۳ دارای تعداد زیادی API اختصاص یافته برای برنامه نویسی موازی / همزمان هستند. محبوب ترین آنها نخ ، همزمان. ویژگی ها ، چند پردازش ، asyncio ، gevent و greenlets و غیره است.

محدودیت های پایتون در اجرای برنامه های همزمان

پایتون برای برنامه های همزمان محدودیت دارد. این محدودیت GIL نامیده می شود (Global Interpreter Lock) در پایتون وجود دارد. GIL هرگز به ما اجازه استفاده از چندین هسته پردازنده را نمی دهد و از این رو می توان گفت که هیچ رشته واقعی در پایتون وجود ندارد. ما می توانیم مفهوم GIL را به شرح زیر درک کنیم –

GIL 

این یکی از بحث برانگیزترین موضوعات در جهان پایتون است. در CPython ، GIL mutex است – قفل محرومیت متقابل، که باعث می شود همه چیز ایمن باشد. به عبارت دیگر ، می توان گفت که GIL از اجرای چندین رشته به طور موازی کد پایتون جلوگیری می کند. قفل را می توان همزمان فقط با یک نخ نگه داشت و اگر بخواهیم یک رشته را اجرا کنی، ابتدا باید قفل را بدست آورد. نمودار نشان داده شده در زیر به شما در درک عملکرد GIL کمک می کند.

 

Limitations

 

با این حال ، برخی از کتابخانه ها و پیاده سازی ها در پایتون مانند Numpy ، Jpython و IronPytbhon وجود دارد. این کتابخانه ها بدون هیچ گونه تعامل با GIL کار می کنند.

 

منبع.

لیست جلسات قبل آموزش همزبانی در پایتون

  1. آموزش همزمانی در برنامه نویسی پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه