۲ ابزار برای بارگیری خودکار هنگام تغییر پرونده‌های پایتون

شکل ۱. بارگیری خودکار پرونده‌های پایتون
شکل ۱. بارگیری خودکار پرونده‌های پایتون

منتشر‌شده در: towardsdatascience
لینک منبع: 2 Tools to Automatically Reload when Python Files Change

انگیزه

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

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

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

دستور اختیاری Entr — Run وقتی فایل‌های پایتون شما تغییر می‌کنند

نحوه کار

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

ما فایل بالا را با نام entr _ exampl.py نامگذاری می‌کنیم. سپس از pytest برای بررسی اینکه آیا تابع theget_evens اعداد زوج را باز می‌گرداند یا خیر استفاده کنید.

$ pytest entr_examples.py

این تست با شکست مواجه می‌شود زیرا ما هنوز هیچ کدی را به تابع get_evens اضافه نکرده ایم. برای امتحان روش‌های مختلف برای به دست آوردن اعداد زوج، اجازه دهید از entr برای اجرای مجدد دستور entr_examples.py استفاده کنیم.

$ ls entr_examples.py | entr python entr_examples.py

چه خوب! با استفاده از entr، نیازی نیست که همان دستور را دوباره در حین توسعه عملکردمان اجرا کنیم.

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

دستورالعمل

در زیر دستور کلی entr آورده شده‌است:

دستور کلی
دستور کلی

توجه داشته باشید که اگر می‌خواهید فایل‌های پیتون متعددی را در یک زمان دنبال کنید، از دستور ls *.py | entr command_to_run استفاده کنید. این بدین معنی است که اگر هر یک از فایل‌های ردیابی شده تغییر کنند، دستور command_to_run اجرا خواهد شد.

ممکن است علاقه‌مند به مطالعه چگونه ظرف ۶ ماه بدون دانش کد‌نویسی دانشمند داده شدم، باشید.

نصب

برای نصب entr در MacOS، تایپ کنید:

brew install entr

برای نصب entr روی Ubuntu، تایپ کنید:

sudo apt-get update
sudo apt-get install entr

گزینه دیگر کلون کردن entr repo و دنبال کردن دستورالعمل نصب است.

بارگیری مجدد - بدن حلقه را بارگیری کنید بدون اینکه حالت خود را از دست بدهید

نحوه کار

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

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

به طور معمول، این کار را نمی توان در پایتون انجام داد. در کد زیر، با وجود اینکه ما print(f'{num} is odd') را به بدنه حلقه در طول اجرا اضافه می‌کنیم، هیچ عدد فرد در خروجی وجود ندارد.

با این حال، این کار می‌تواند به راحتی با بارگذاری مجدد انجام شود. در GIF زیر نشان می‌دهد که چگونه اضافه کردن بارگذاری مجدد به حلقه می‌تواند تفاوت ایجاد کند.

همانطور که می‌بینیم، اعداد فرد بعد از اضافه کردن یک عبارت دیگر به بدنه حلقه در طول اجرا چاپ می‌شوند!

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

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

دستورالعمل

برای استفاده از reloading، به سادگی آن را به یک حلقه پایتون مانند زیر اضافه کنید:

استفاده از reloading
استفاده از reloading

نصب

pip install reloading

نتیجه‌گیری

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

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