
مقدمه
پایتون یکی از راحتترین زبانهای برنامهنویسی است زیرا کدهای پایتون بسیار شبیه به متون رایج زبان انگلیسی هستند. وقتی یک تکه کد پایتونی را میخوانید مانند این است که در حال خواندن یک دستور العمل ساده هستید که به زبان انگلیسی نوشته شده است.
همین امر موجب شده تا بسیاری از افرادی که با پایتون برنامهنویسی میکنند تصور کنند این زبان را به خوبی میشناسند، در صورتی که پایتون امکانات حرفهای و پیچیدهای نیز دارد که حتی در بسیاری از دورههای آموزش پایتون به آن پرداخته نشده است و بسیاری از برنامهنویسان نیز از آن بیخبر هستند.
Concurrent Programming یکی از امکانات پیشرفته پایتون است که قصد دارم در این دوره به شما آموزش دهم. Concurrent Programming با عناوینی چون برنامهنویسی همزمان، برنامهنویسی همروند، همروندی و کانکارنسی و … نیز شناخته میشود.
کانکارنسی چیست؟
با استفاده از کانکارنسی میتوان برنامه را به بخشهای کوچکتری تقسیم و همه بخشها را به صورت موازی یا همزمان اجرا کرد. بدین گونه میتوان با نهایت استفاده از سختافزار، سرعت نرمافزار را افزایش داد.
توضیحاتی در مورد این دوره
چندین ماژول برای کانکارنسی در پایتون وجود دارد که استفاده از آنها بسیار راحت است. اما اگر مفاهیم پایهای سیستمعامل را ندانید، استفاده از همین ماژولهای ساده برایتان سخت و غیر قابل فهم خواهد بود. به همین دلیل در بخش اول این دوره شما را با مفاهیم تئوری و پایهای در سیستمعامل آشنا میکنم و سپس در بخشهای بعد ماژولهای multiprocessing و multithreading و Asynchronous Programming را بررسی کرده و امکانات ویژه هریک را با مثالهای متعدد به شما آموزش میدهم.
این دوره مناسب چه کسانی است؟
- کسانی که مایل هستند رزومه خود را ارتقا دهند
- کسانی که به بهینه بودن کدها اهمیت میدهند
- کسانی که به سریع بودن کدها اهمیت میدهند
- کسانی که میخواهند استفاده بهتری از منابع سختافزاری داشته باشند
سرفصل دوره
- مفاهیم پایه سیستمعامل
- پارادایم Concurrent Programming در برابر پارادایم Sequential Programming
- انواع حالات برنامه نویسی در پارادایم Concurrent Programming
- thread_ – ایجاد ترد
- thread_ – قفل کردن منابع مشترک
- threading – کلاس Thread
- threading – ویژگی daemon
- threading – کلاس Lock و RLock
- threading – کلاس Semaphore و BoundedSemaphore
- threading – کلاس Timer
- threading – کلاس Event
- threading – کلاس Consition
- بررسی مفهوم thread safe
- بررسی Global Interpreter Lock (GIL)
- قفل کردن منابع مشترک
- بررسی مشکل Race Condition
- بررسی مشکل Dead Lock
- asyncio
- asyncio – مروری بر coroutine
- asyncio – کنسل کردن coroutine
- asyncio – مروری بر Futures
- asyncio – متد as_completed
- asyncio – کلاس Lock
- asyncio – بهبود عملکر با gather
- multiprocessing – انواع روشهای ارتباط Processها
- multiprocessing – ویژگی ها
- multiprocessing – کلاس Lock
- multiprocessing – کلاس Pool
- concurrent.futures – کلاس ProcessPoolExecutor
- concurrent.futures – کلاس ThreadPoolExecutor