در این دوره تلاش شده که کلیه مفاهیم موازیسازی و پردازش موازی در پایتون از ابتدا گفته شود؛ اما لازم است که برای فهم بهتر مفاهیم گفتهشده تا حدی با زبان پایتون و نحوه استفاده از توابع، لیستها و فرهنگ لغت آشنا باشید.
در دنیای امروز پایتون بهخاطر سادگی و امکانات و کتابخانههای بسیار گستردهاش به یکی از محبوبترین و جذابترین زبانهای برنامهنویسی تبدیل شده است. درواقع برنامهنویسان پایتون با نوشتن برنامههای ساده میتوانند کارهای بزرگ و پیچیده را بهراحتی انجام دهند. با توجه به اهمیت افزایش سرعت اجرای برنامهها و موازیسازی در کامپیوتر لازم است که برنامهنویسان این زبان به سراغ پردازش موازی در پایتون بروند. این شیوه برنامهنویسی از برنامهنویسی عادی پیچیدهتر نخواهد بود؛ اما سرعت اجرای برنامهها و عملکرد آنها را به طرز شگفتانگیزی تغییر خواهد داد.
هدف از دوره پردازش موازی در پایتون تربیت برنامهنویسانی است که بهصورت حرفهای برنامه مینویسند و از همه توان سختافزاری کامپیوتر و وسایل هوشمند برای اجرای برنامهها استفاده میکنند. این دوره به زبان پایتون ارائه میشود؛ اما مفاهیم آن بهگونهای بیان خواهد شد که هرکسی که از زبانهای دیگر برای برنامهنویسی استفاده میکند هم بتواند ترفندهای آن را به کار بگیرد.
نکته مهم این است که همیشه پردازش موازی در پایتون یا هر زبان برنامهنویسی دیگری نمیتواند باعث بهبود سرعت برنامهها شود و حتی ممکن است آنها را کندتر از حالت عادی به نتیجه نهایی برساند. یکی از اهداف مهم و کاربردی در این دوره کسب مهارت شناسایی مسائلی است که موازیسازی برای آنها مفید نیست تا وقت برنامهنویسان برای نوشتن برنامههای بیفایده تلف نشود.
دوره آموزش پردازش موازی در پایتون برای توسعهدهندگانی طراحی شده است که قصد دارند با ارتقای مهارتها و یادگیری برنامهنویسی همزمان و موازی، حرفهایتر بشوند و برنامههای جذابتر و کاربردیتری بنویسند. درواقع این دوره آنها را یک قدم به جلو میبرد.
علاوه بر این دانشجویانی که اکنون در حال یادگیری مفاهیم اولیه برنامهنویسی و محاسبات موازی هستند و دوست دارند بدانند که چگونه میتوانند مفاهیم آموزشدادهشده در کلاس را با تمرین به مهارت تبدیل کنند، میتوانند در این دوره ثبتنام کنند.
این دوره تنها برای افراد مبتدی مفید نیست، توسعهدهندگان باتجربهای که به زبان پایتون مسلط هستند و حتی بهنوعی با برنامهنویسی موازی سروکار داشتهاند هم میتوانند با شرکت در این دوره از زاویهای متفاوت به موضوع نگاه کنند و مفاهیم جدید و امروزی را یاد بگیرند.
با شرکت در دوره پردازش موازی با پایتون یاد میگیرید که چگونه نرمافزارهایی کاربرپسند با کارایی بالا بسازید که بتوانند در زمانی کوتاه نیازهای یک یا چند کاربر را برطرف کنند و به همه درخواستهای ورودی کاربر جواب صحیحی بدهند.
علاوه بر این نحوه برنامهنویسی multithreading و multiprocessing را نیز یاد میگیرید تا بتوانید مشکلات و مسائل خاص و پیچیده را با مدلسازی و برنامهنویسی شیءگرا بهراحتی آب خوردن حل کنید.
در این دوره یاد میگیرید که چگونه برنامههایی به زبان پایتون بنویسید که از حداکثر قابلیت موازیسازی استفاده کردهاند و با همزمانی بخشهای مختلف در زمانی کوتاه اجرا میشوند. همچنین با مزایا، معایب و محدودیتهای برنامهنویسی موازی نیز آشنا میشوید.
در این دوره مهارتهای برنامهنویسی پایتون شما بسیار رشد میکند و میتوانید برای مسائل پیشرفتهتر، چندمنظوره و چند پردازشی برنامه بنویسید. همچنین درباره قابلیتهای زبان پایتون در برنامهنویسی موازی نیز مطالبی مفید و کاربردی یاد خواهید گرفت.
محمدرضا کریمینژاد متولد ١٣٨٠، از ۱۵ سالگی شروع به برنامهنویسی کرده و از ۱۷ سالگی وارد بازار کار شده است. در مدارس سمپاد برنامهنویسی تدریس کرده است و در شرکتهای نظیر کافهبازار و نوبیتکس به عنوان مهندس نرم افزار دارای تجربه میباشد. محمدرضا کریمینژاد اکنون در دانشکده پزشکی دانشگاه هاروارد و آزمایشگاه یادگیری ماشین دانشگاه شریف مشغول به پژوهش هست.
برای آشنایی بیشتر با پردازش موازی در پایتون در این بخش تعدادی از مهمترین مفاهیم این دوره را توضیح میدهیم تا بتوانید دیدی کلی در خصوص دوره و کاربرد آن پیدا کنید.
در فضای سختافزار چند پردازشی به معنای قراردادن چند پردازنده در کنار یکدیگر است که بهصورت موازی برنامههای در حال اجرا بر روی سیستم را مدیریت میکنند. برنامهنویسان با استفاده از پردازش موازی در پایتون میتوانند این سیستم را به کار بگیرند تا برنامههای خود را با سرعت بهتری اجرا کنند. علاوه بر اینچنین روش برنامهنویسی باعث شکلگیری مفاهیم جدید مانند multithreading، برنامهنویسی شیءگرا، همزمان و ... شده است که لازم است با آنها نیز آشنا باشید.
Multiprocessing درواقع همان پردازنده چندهستهای یا استفاده از پردازندههای موازی در سختافزار است که به اجرای برنامههایی که بهصورت موازی نوشته شدهاند کمک میکند. این فرایند برای تقسیم وظایف بین هستههای مختلف پردازنده و نحوه بهاشتراکگذاری منابع بین آنها تعریف شده است.
Multithreading از مفاهیم برنامهنویسی شیءگرا و موازی است که به برنامهنویس کمک میکند برنامه خود را در قالب رشتههای مختلف تعریف کرده و آنها را با یکدیگر مرتبط کند.
برای راحتی برنامهنویسان موازی و عدم نیاز به تعریف همه جزئیات از صفر 6 کتابخانه بسیار مهم در پایتون ساخته شده است که در این دوره کار با همه آنها را یاد گرفته و توابع موجود در هریک را میشناسید. این کتابخانهها شامل Ray، Dask، Dispy، Pandaral-lel، Ipyparallel و Joblib میشود.
برای اینکه برنامههایی که بهصورت موازی نوشتهاید اجرا شوند، نیاز است که از نحوه اجرای موازی یا Parallelism نیز اطلاع داشته باشید. درواقع باید تا حدودی بدانید که چگونه منابع مشترک مانند حافظه را بین برنامههای مختلف به اشتراک بگذارید تا برنامهها با سرعت بالا و درست همانطور که شما دوست دارید اجرا شوند. در این مفهوم علاوه بر موازیسازی سختافزاری خود برنامه نیز taskها را به بخشهای کوچکتر تقسیم میکند تا هستههای مختلف پردازنده راحتتر از پس اجرای آنها بربیایند.
مفهوم همزمانی یا Concurrency به توانایی یک برنامه برای اجرای همزمان چند task مربوط میشود. این مفهوم زمانی به کار میآید که کامپیوتر شما ازنظر سختافزاری برای اجرای برنامهها محدودیت دارد اما با تقسیم آن بین taskهای مختلف میتوانید موازیسازی را تا حدی در آن پیاده کنید.