شش روش‌ برای سرعت بخشیدن به کد پایتون

شکل ۱. افزایش سرعت اجرای کد پایتون
شکل ۱. افزایش سرعت اجرای کد پایتون


منتشر‌شده در: towardsdatascience به تاریخ ۲۰ فوریه ۲۰۲۱
لینک منبع: 6 Approaches to Speed Up Your Python Code

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

توسعه‌دهندگان و شرکت‌ها از پایتون در کارهای روزمره خود برای ساخت برنامه‌های کاربردی، انجام تحقیقات و توسعه بسته‌هایی برای دیگران استفاده کردند. در حال حاضر، بیش از ۲۰۰۰۰۰ بسته پایتون وجود دارد که طیف گسترده‌ای از کاربردها از دستکاری ساده رشته گرفته تا یادگیری ماشینی کامل و بسته‌های هوش مصنوعی را پوشش می‌دهد.

پایتون یک چارچوب کامل برای هر کسی است که می‌خواهد به طور کلی برای هر شاخه علم داده به طور خاص برنامه‌ریزی کند. پایتون مزایای زیادی برای کمک به مردم در ساخت نمونه کارها و حرفه‌شان دارد. به هر حال، وقتی شما زبان برنامه‌نویسی را یاد گرفتید، یادگیری زبان دیگر پیچیده نیست.

اگر چه مزایای پایتون بر معایب آن می‌چربد، اما به نظر می‌رسد یکی از معایب آن، مرکز بحث‌های بسیاری باشد که در آن کسی علیه پایتون بحث می‌کند، « پایتون بسیار کند است.» سرعت برای همه ما این روزها ضروری است؛ فن‌آوری ما را بی‌تاب کرده است؛ اگر یک برنامه کاربردی یک ثانیه بیشتر طول بکشد تا باز شود یا یک صفحه وب چند ثانیه طول بکشد، ما ناامید می‌شویم زیرا بسیار کند است.

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

مراحل ساده‌ای وجود دارد که در حین نوشتن کد خود می‌توانیم انجام دهیم که منجر به اجرای سریع‌تر کد می‌شود. شاید نه به اندازه C، C + + یا جاوا، بلکه به اندازه کافی سریع باشد تا کد پایتون آن را بهتر کند.

روش اول:‌ به روز باشید

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

بنابراین، برنامه‌ریزی برای مرحله بعدی با استفاده از آخرین انتشار همیشه ایده خوبی است تا زمانی که این انتشار با تمام وابستگی‌های شما سازگار باشد.

به روز ماندن همچنین در مورد بسته‌ها و کتابخانه‌هایی که استفاده می‌کنید نیز صدق می‌کند. ارائه دهندگان کتابخانه همیشه در حال کار بر روی اصلاح اشکالات، اضافه کردن ویژگی‌های جدید، و بهینه‌سازی موارد موجود هستند.

روش دوم: از ساختارهای داده به صورت بهینه استفاده کنید.

ساختارهای داده، بلوک‌های سازنده اساسی علم کامپیوتر هستند. ساختارهای داده‌ای مختلف بسیاری در پایتون پیاده‌سازی شده‌اند، مانند لیست‌ها، تاپل‌ها، دیکشنری‌ها، مجموعه‌ها و غیره. اما اغلب مردم تمایل دارند که از لیست‌ها برای تمام کارهای تکراری خود استفاده کنند.

دانستن ساختار صحیح داده برای استفاده در برنامه شما می‌تواند آن را بسیار سریع‌تر کند. برای مثال، استفاده از دیکشنری‌ها و مجموعه‌ها در برنامه‌های جستجو نسبت به لیست‌ها کارآمدتر است زیرا آن‌ها براساس جداول هش ساخته شده‌اند و همیشه به زمان O (۱) برای جستجوی هر آیتمی نیاز دارند.

کسب اطمینان از این که شما از ساختار داده مناسب استفاده می‌کنید، مهارتی است که به شما نیاز دارد تا در مورد انواع مختلف ساختارهای داده و بهترین برنامه برای هر یک از آن‌ها بدانید.

مطالعه مقاله یونیت تست برای برنامه‌های یادگیری عمیق با پایتون توصیه می‌شود.

روش سوم: فقط در صورت نیاز از حلقه استفاده کنید.

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

از این رو، ما نیاز به کاهش میزان گرد و غبار در کد خود داریم. این کار را می‌توان با استفاده از یک متغیر متفاوت برای مرتب کردن یک لیست به جای حلقه زدن در لیست یا استفاده از تکنیک‌های بازفاکتورگیری مانند تقاطع و اتحادیه‌ها برای بهینه‌سازی کد ما انجام داد.

روش دیگر برای استفاده موثرتر از حلقه‌ها استفاده از درک لیست در هر زمان ممکن است؛ به عنوان مثال، ایجاد و پر کردن یک لیست از طریق درک بهتر با استفاده از روش ضمیمه انجام می‌شود. در نهایت، while loops نسبت به for loops، از نظر آماری و زمانی کارآمدتر هستند، for loops را جایگزین while loops کنید.

روش چهارم: چیزی که قبلا ساخته شده را مجددا نسازید

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

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

توابع داخلی مانند مجموع، ماکزیمم، any، filter و map با استفاده از C پیاده‌سازی می‌شوند و آن‌ها را سریع و کارآمد می‌سازند. علاوه بر این، ماژول جمع‌آوری پایتون طیف گسترده‌ای از ساختارهای داده‌ای را ارائه می‌دهد که می‌توانید فورا از آن‌ها برای بهینه‌سازی کد خود استفاده کنید. همیشه قبل از این که شروع به ساختن آن بکنید، ببینید چه چیزی آنجا هست.

روش پنجم: از روش‌هایی که حافظه را کمتر اشغال می‌کنند استفاده کنید.

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

  • از ژنراتورها برای تولید مقادیر دامنه استفاده کنید زیرا آن‌ها به مصرف حافظه کمتری نیاز دارند.
  • از sort() به جای sorted() استفاده کنید زیرا sorted یک کپی جدید تکراری ایجاد می‌کند. استفاده از مرتب‌سازی شده در مورد مجموعه داده‌های بزرگ کارآمدتر است.
  • از __slots__ استفاده کنید. اسلات یک روش خاص برای اعلام متغیرهایی است که نمونه یک متغیر را در نظر می‌گیرند و تنها فضای کافی را برای حفظ ارزش آن ذخیره می‌کنند.
  • برای مقابله و انجام عملیات بر روی اعداد و ماتریس‌های بزرگ از ریاضیات و عدد پی استفاده کنید. این کتابخانه‌ها برای کارآمد بودن حافظه ساخته شده‌اند.
  • از فرمت یا روش‌های join برای الحاق رشته‌ها به جای استفاده از عملکردهای + استفاده کنید.

روش شش: از برنامه‌های تسریع کننده استفاده کنید.

برنامه‌های مختلفی می‌توانند برای سرعت بخشیدن به کد پایتون شما مورد استفاده قرار گیرند. با این حال، این کاربردها نیازمند این هستند که شما بخش‌هایی از کد خود را بازنویسی کنید تا آن را کارآمدتر کنید.

برای مثال، شما می‌توانید از سایتون(Cython) برای نوشتن بخش‌هایی از کد خود با استفاده از C یا استفاده از توابع C استفاده کنید. کد تولید شده توسط سایتون به زبان ماشین ترجمه می‌شود و اجرای آن را سریع‌تر می‌کند. یک انتخاب دیگر این است که از نومبا (Numba) استفاده کنیم که یک کامپایلر به موقع است. نومبا اساسا کد پایتون را به یک کد ماشین سریع‌تر برای اجرای سریع‌تر تبدیل می‌کند.

همچنین PyPy یک گزینه برای سرعت بخشیدن به کد شما است. این روش جایگزین خوبی برای سایتون فراهم می‌کند. تنها عیبPyPy این است که با تمام بسته‌های پایتون سازگار نیست، بنابراین اطمینان حاصل کنید که تمام وابستگی‌های شما قبل از اینکه تصمیم به استفاده از PyPy بگیرید، پشتیبانی می‌شوند.

نتیجه گیری

پایتون یکی از محبوب‌ترین زبان‌های برنامه‌نویسی موجود است؛ یادگیری برای مبتدیان و متخصصان آسان‌تر است، خواندن و درک آن ساده است، و می‌تواند تقریبا در هر برنامه‌ای که فکر می‌کنید مورد استفاده قرار گیرد. در سال ۲۰۱۹، SlashData تعداد توسعه‌دهندگان را با استفاده از پایتون به عنوان زبان برنامه‌نویسی اصلی خود به ۲ / ۸ میلیون توسعه‌دهنده تخمین زد، که تعداد آن‌ها هر روز افزایش می‌یابد.

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

ما نمی‌توانیم ماهیت پایتون را تغییر دهیم، اما می‌توانیم گام‌های ساده‌ای را هنگام نوشتن کد خود برداریم تا آن را نسبتا سریع‌تر و موثرتر اجرا کنیم. در این مقاله، ما از ۶ راه معرفی کردیم تا کد پایتون خود را سریع‌تر بسازید. این بدان معنا نیست که اینها تنها راه‌های سرعت بخشیدن به کد شما هستند، بلکه راه خوبی برای شروع بهینه‌سازی کد پایه شما هستند.

این متن با استفاده از ربات ترجمه مقاله برنامه نویسی ترجمه شده و به صورت محدود مورد بازبینی انسانی قرار گرفته است.در نتیجه می‌تواند دارای برخی اشکالات ترجمه باشد.
مقالات لینک‌شده در این متن می‌توانند به صورت رایگان با استفاده از مقاله‌خوان ترجمیار به فارسی مطالعه شوند.