
مقدمه
پایتون یکی از راحتترین زبانهای برنامهنویسی است زیرا کدهای پایتون بسیار شبیه به متون رایج زبان انگلیسی هستند. وقتی یک تکه کد پایتونی را میخوانید مانند این است که در حال خواندن یک دستور العمل ساده هستید که به زبان انگلیسی نوشته شده است.
همین امر موجب شده تا بسیاری از افرادی که با پایتون برنامهنویسی میکنند تصور کنند این زبان را به خوبی میشناسند، در صورتی که پایتون امکانات حرفهای و پیچیدهای نیز دارد که حتی در بسیاری از دورههای آموزش پایتون به آن پرداخته نشده است و بسیاری از برنامهنویسان نیز از آن بیخبر هستند.
Concurrent Programming یکی از امکانات پیشرفته پایتون است که قصد دارم در این دوره به شما آموزش دهم. Concurrent Programming با عناوینی چون برنامهنویسی همزمان، برنامهنویسی همروند، همروندی و کانکارنسی و … نیز شناخته میشود.
کانکارنسی چیست؟
با استفاده از کانکارنسی میتوان برنامه را به بخشهای کوچکتری تقسیم و همه بخشها را به صورت موازی یا همزمان اجرا کرد. بدین گونه میتوان با نهایت استفاده از سختافزار، سرعت نرمافزار را افزایش داد.
توضیحاتی در مورد این دوره
چندین ماژول برای کانکارنسی در پایتون وجود دارد که استفاده از آنها بسیار راحت است. اما اگر مفاهیم پایهای سیستمعامل را ندانید، استفاده از همین ماژولهای ساده برایتان سخت و غیر قابل فهم خواهد بود. به همین دلیل در بخش اول این دوره شما را با مفاهیم تئوری و پایهای در سیستمعامل آشنا میکنم و سپس در بخشهای بعد ماژولهای multiprocessing و multithreading و Asynchronous Programming را بررسی کرده و امکانات ویژه هریک را با مثالهای متعدد به شما آموزش میدهم.
این دوره مناسب چه کسانی است؟
- کسانی که مایل هستند رزومه خود را ارتقا دهند
- کسانی که به بهینه بودن کدها اهمیت میدهند
- کسانی که به سریع بودن کدها اهمیت میدهند
- کسانی که میخواهند استفاده بهتری از منابع سختافزاری داشته باشند
سرفصل دوره
- مفاهیم پایه
- multi-threading با ماژول _thread
- multi-threading با ماژول threading
- مفاهیم مشترک multi-threading
- کانکارنسی با asyncio
- multiprocessing
- ایجاد Process
- انواع روشهای ارتباط Process ها
- ویژگی ها
- کلاس Lock
- کلاس Pool
- کلاس Semaphore
- کلاس Event
- کلاس Condition
- کلاس Barrier
- کلاس Manager و حافظه مشترک
- تفاوت Pool و ProcessPoolExecutor
- مدیریت حافظه و سرریز آن در پردازشهای موازی
- مدیریت خطا در multiprocessing
- Trio و AnyIO؛ جایگزینهای مدرن asyncio
- multi-threading و multiprocessing با concurrent.future
- راهنمای انتخاب و جمعبندی دوره