Category

Python Programming

Python language tutorials, patterns, and best practices

91 posts

فراتر از PyPI: تسلط بر C-Extensions و Binary Wheels با Scikit-Build برای علم داده

پایتون به زبان مشترک علم داده تبدیل شده است، اما تکیه اکوسیستم آن بر پایتون خالص، اغلب یک گلوگاه حیاتی را پنهان می‌کند: عملکرد. برای محاسبات عددی سنگین، دانشمندان داده اغلب به کتابخانه‌هایی روی می‌آورند که بر پایه C، C++ یا Fortran ساخته شده‌اند، مانند NumPy، SciPy و Pandas. چگونه...

تسلط بر تجزیه کارآمد از نظر حافظه CSV و JSON: راهنمایی برای استفاده از Iterators پیشرفته در پایتون

در دنیای مهندسی داده، ضرب‌المثل «ورودی زباله، خروجی زباله» اغلب تحت‌الشعاع تهدید فوری‌تری به نام «ورودی داده، خروجی حافظه» قرار می‌گیرد. هنگام کار با مجموعه‌داده‌های مقیاس بزرگ—چه گیگابایت‌ها لاگ‌های سرور به فرمت CSV و چه ترابایت‌های JSON ساختاریافته از دستگاه‌های IoT—رویکرد ساده‌انگارانه‌ی بارگذاری کل فایل در حافظه با استفاده از pandas.read_csv() یا json.load() مانند دستورالعملی برای فاجعه است. پایتون...

پل زدن به شکاف: اجرای همزمانی ترکیبی با AsyncIO و Multiprocessing در پایتون

توسعه‌دهندگان پایتون اغلب با یک معضل همیشگی روبرو هستند: چگونه عملکرد برنامه را هنگام مواجهه با ترکیبی متنوع از وظایف به حداکثر برسانند. در یک سوی طیف، وظایف محدود به ورودی/خروجی (I/O) قرار دارند، مانند کوئری‌های پایگاه داده، درخواست‌های شبکه و عملیات فایل، که در آن‌ها پردازنده در انتظار داده‌ها بیکار می‌ماند...

عملکرد پایتون: ژنراتورها و نمای‌های حافظه

در منظره داده‌های مدرن، توسعه‌دهندگان پایتون اغلب با چالش پردازش مجموعه‌داده‌های عظیمی که از حافظه سیستم موجود فراتر می‌روند، روبرو هستند. در حالی که رویکردهای سنتی شامل بارگذاری کل فایل‌ها در لیست‌ها یا DataFrames است، این روش می‌تواند منجر به تخلیه حافظه و گلوگاه‌های عملکردی شدید شود. برای ساخت برنامه‌های مقاوم و مقیاس‌پذیر، مهندسان باید رویکردی کارآمدتر را اتخاذ کنند. این پست بررسی می‌کند که چگونه ترکیب ژنراتورها و نمای‌های حافظه می‌تواند خطوط لوله داده شما را متحول کند.

تسلط بر ورودی/خروجی فایل ناهمگام و مدیریت‌کننده‌های زمینه برای پردازش کارآمد داده‌های مقیاس‌بزرگ

در منظره مدرن مهندسی داده، حجم داده‌هایی که پردازش می‌کنیم اغلب از ظرفیت عملیات ورودی/خروجی فایل همگام فراتر می‌رود تا بدون ایجاد تأخیر قابل توجه مدیریت شوند. هنگام کار با ترابایت‌ها لاگ، خروجی‌های بزرگ CSV یا جریان‌های داده JSON، مسدود کردن رشته اصلی برای عملیات دیسک می‌تواند کارایی برنامه را فلج کند، به‌ویژه در محیط‌های با هم‌زمانی بالا مانند سرویس‌های وب یا خطوط لوله داده.

ساخت APIهای GraphQL بلادرنگ با FastAPI و Strawberry برای دریافت داده‌های پویا

منظره توسعه وب مدرن نیازمند برنامه‌هایی است که نه تنها کارآمد باشند، بلکه در لحظه نسبت به تغییرات وضعیت داده‌ها نیز واکنش‌گرا باشند. در حالی که APIهای REST سال‌ها استاندارد بوده‌اند، ظهور GraphQL نحوه دریافت داده توسط کلاینت‌ها را دگرگون کرده و امکان پرس‌وجوی دقیق و کاهش دریافت‌های اضافی را فراهم می‌کند.

باز کردن قفل ورودی/خروجی با کارایی بالا: پردازش کارآمد داده‌های باینری با mmap و struct در پایتون

در دنیای برنامه‌نویسی پایتون، آسانی استفاده اغلب به قیمت کارایی خام تمام می‌شود. برای برنامه‌هایی که با مجموعه‌داده‌های عظیم، شبیه‌سازی‌های علمی یا لاگ‌های معاملات با فرکانس بالا سروکار دارند، روش‌های استاندارد ورودی/خروجی فایل مانند open() و read() می‌توانند گلوگاه‌های قابل توجهی ایجاد کنند. بارگذاری کل فایل‌ها در حافظه...