کتاب بهبود عملکرد الگوریتمها در پایتون با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
بهبود عملکرد الگوریتمها در پایتون: راهی به سوی کدنویسی حرفهای! از پایتون لذت ببرید، اما با سرعت نور! دوره جامع بهبود عملکرد الگوریتمها آیا از کندی اجرای کدهای پایتون خود خسته شدهاید؟ آیا میخواهید...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره بهبود عملکرد الگوریتمها در پایتون
موضوع کلی: برنامه نویسی
موضوع میانی: محاسبات سطح بالا (High-Performance Computing)
📋 سرفصلهای دوره
- 1. مقدمهای بر بهبود عملکرد الگوریتمها در پایتون
- 2. چرا عملکرد کد پایتون اهمیت دارد؟
- 3. مروری بر اصول طراحی الگوریتم کارآمد
- 4. معیارهای اندازهگیری عملکرد: زمان و حافظه
- 5. مفهوم پیچیدگی زمانی و مکانی (Big O Notation)
- 6. تحلیل پیچیدگی الگوریتمهای رایج
- 7. ابزارهای اولیه اندازهگیری زمان در پایتون: ماژول `time`
- 8. آشنایی با متدهای زمانسنجی دقیق: `timeit`
- 9. اشتباهات رایج در اندازهگیری عملکرد
- 10. اهمیت و روشهای نوشتن کد قابل خواندن و قابل نگهداری
- 11. معرفی مفهوم پروفایلینگ (Profiling)
- 12. استفاده از `cProfile` برای یافتن گلوگاهها
- 13. تفسیر خروجی پروفایلر و شناسایی نقاط داغ (Hot Spots)
- 14. ابزارهای بصریسازی پروفایلینگ: `snakeviz`
- 15. پروفایلینگ خط به خط با `line_profiler`
- 16. پایش مصرف حافظه با `memory_profiler`
- 17. استفاده از `objgraph` برای تحلیل اشغال حافظه
- 18. بنچمارکینگ (Benchmarking) و تفاوت آن با پروفایلینگ
- 19. اصول بنچمارکینگ معتبر و قابل تکرار
- 20. تحلیل آماری نتایج بنچمارکینگ
- 21. بهینهسازی ساختارهای داده داخلی پایتون: لیستها
- 22. درک عملکرد تاپلها و کاربردهای آنها
- 23. مجموعهها (Sets) برای جستجو و عملیات منحصر به فرد
- 24. دیکشنریها (Dictionaries) برای نگاشتهای سریع
- 25. استفاده کارآمد از حلقههای `for` در پایتون
- 26. درک مفهوم درک لیست (List Comprehensions)
- 27. درک تولیدکننده (Generator Expressions) برای حافظه
- 28. تفاوت و انتخاب بین درک لیست و درک تولیدکننده
- 29. استفاده از توابع داخلی پایتون برای کارایی (مثال: `map`, `filter`)
- 30. بهینهسازی عملیات رشتهای در پایتون
- 31. اجتناب از ایجاد اشیاء موقت غیرضروری
- 32. مفهوم `__slots__` برای کاهش مصرف حافظه کلاسها
- 33. بهینهسازی فراخوانی توابع و سربار آن
- 34. استفاده از توابع `lambda` با احتیاط
- 35. کشینگ (Caching) و ذخیرهسازی نتایج: `functools.lru_cache`
- 36. مقدمهای بر ساختارهای داده پیشرفته
- 37. انتخاب ساختار داده مناسب برای مسئله
- 38. صفها و پشتهها: پیادهسازی و کاربرد
- 39. `collections.deque` برای صفهای کارآمد
- 40. `collections.defaultdict` و `Counter` برای سناریوهای خاص
- 41. هیپ (Heap) و ماژول `heapq` برای صفهای اولویت
- 42. آرایههای تایپشده با ماژول `array`
- 43. درختها و گرافها: ملاحظات عملکردی در پایتون
- 44. پیادهسازی ساختارهای داده سفارشی با کارایی بالا
- 45. توازن بین پیچیدگی زمانی، مکانی و سادگی کد
- 46. مدیریت حافظه در پایتون: مدل اشیاء
- 47. شمارش ارجاع (Reference Counting) و عملکرد آن
- 48. جمعآوری زباله (Garbage Collection) و حل مشکل چرخههای ارجاع
- 49. نظارت بر مصرف حافظه برنامهها با ابزارهای پیشرفته
- 50. تکنیکهای کاهش مصرف حافظه: Lazy Loading
- 51. استفاده از `memoryview` برای دسترسی مستقیم به بافر
- 52. نگاشت حافظه (Memory Mapping) با `mmap` برای فایلهای بزرگ
- 53. سریالسازی (Serialization) و دسریالسازی (Deserialization) با کارایی بالا
- 54. پروتکل بافر (Protocol Buffers) و MessagePack برای دادههای ساختاریافته
- 55. مدیریت حافظه در سیستمهای توزیعشده (مقدماتی)
- 56. مقدمهای بر محاسبات عددی با NumPy
- 57. آرایههای NumPy در مقابل لیستهای پایتون: چرا سریعتر است؟
- 58. مفهوم و اهمیت وکتورسازی (Vectorization)
- 59. قوانین Broadcast در NumPy
- 60. توابع جهانی (Universal Functions - ufuncs) در NumPy
- 61. آرایههای چندبعدی و مدیریت حافظه در NumPy
- 62. نمایه سازی (Indexing) و برش (Slicing) پیشرفته NumPy
- 63. جبر خطی با NumPy و استفاده از کتابخانههای BLAS/LAPACK
- 64. SciPy: ابزاری قدرتمند برای محاسبات علمی
- 65. ماتریسهای خلوت (Sparse Matrices) برای دادههای بزرگ
- 66. توابع بهینهسازی در SciPy (مثال: `scipy.optimize`)
- 67. پردازش سیگنال و تصویر با SciPy و NumPy
- 68. Pandas برای تحلیل و دستکاری دادههای جدولی با عملکرد بالا
- 69. نکات بهینهسازی در استفاده از Pandas
- 70. انتخاب نوع داده مناسب در NumPy و Pandas برای کارایی
- 71. مقدمهای بر همزمانی (Concurrency) و موازیسازی (Parallelism)
- 72. قفل سراسری مفسر (Global Interpreter Lock - GIL): چیست و چرا وجود دارد؟
- 73. تأثیر GIL بر اجرای چند رشتهای (Multithreading)
- 74. ماژول `threading` برای کارهای وابسته به ورودی/خروجی
- 75. پیادهسازی Thread Pool برای مدیریت رشتهها
- 76. ماژول `multiprocessing` برای کارهای وابسته به CPU
- 77. مفهوم Process Pool و کاربرد آن
- 78. ارتباط بین فرایندها (Inter-Process Communication - IPC): صفها و پایپها
- 79. استفاده از حافظه اشتراکی (Shared Memory) در multiprocessing
- 80. `concurrent.futures` برای مدیریت سادهتر همزمانی و موازیسازی
- 81. مفهوم I/O ناهمزمان (Asynchronous I/O)
- 82. ماژول `asyncio` و سینتکس `async/await`
- 83. Loopهای رویداد (Event Loops) در `asyncio`
- 84. انتخاب استراتژی مناسب: رشتهها، فرایندها یا Async I/O
- 85. رفع بنبست (Deadlock) و شرایط رقابتی (Race Conditions)
- 86. Cython: نوشتن افزونههای C در پایتون
- 87. کامپایل کد Cython برای عملکرد حداکثری
- 88. استفاده از Cython برای تعریف نوع و دسترسی به C-level
- 89. `ctypes`: فراخوانی توابع کتابخانههای اشتراکی C/C++
- 90. Numba: کامپایل درجا (Just-In-Time) برای کد پایتون
- 91. استفاده از دکوراتورهای `@jit` و `@njit` در Numba
- 92. Numba و پشتیبانی از آرایههای NumPy
- 93. `guvectorize` در Numba برای توابع جهانی سفارشی
- 94. PyPy: یک جایگزین پایتون با JIT داخلی
- 95. مقایسه و انتخاب بین Cython و Numba
- 96. مقدمهای بر محاسبات توزیعشده (Distributed Computing)
- 97. Dask: محاسبات موازی و خارج از هسته (Out-of-Core) در پایتون
- 98. Ray: ساخت برنامههای توزیعشده با پایتون
- 99. مقدمهای بر محاسبات GPU در پایتون (PyCUDA, PyOpenCL)
- 100. نکات عملکردی در یادگیری ماشین و دیپ لرنینگ (مقدماتی)
تگها:
algorithm optimization
Algorithms
High-Performance Computing
HPC
Performance Tuning
Programming
Python
Python Programming
scientific computing
الگوریتم
برنامه نویسی پایتون
بهینه سازی الگوریتم
پایتون
محاسبات علمی
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.