كيفية بناء تتبع تقدم متقدم باستخدام tqdm
استكشف كيفية استخدام tqdm لتتبع تقدم العمليات في Python مع أمثلة عملية.
مقدمة
يعتبر تتبع التقدم من العناصر الأساسية في تطوير البرمجيات الحديثة، وخاصة في بيئات Python. في هذا المقال، نستعرض كيف يمكن استخدام مكتبة tqdm لتحقيق تتبع تقدم قوي وفعال في سير العمل، بما في ذلك التعامل مع العمليات غير المتزامنة والتنفيذ المتوازي ومعالجة البيانات باستخدام Pandas.
تثبيت وتكوين tqdm في بيئة Colab
لبدء العمل، يجب تثبيت مكتبة tqdm والاعتماديات الأخرى. يمكن القيام بذلك باستخدام الأمر التالي:
!pip -q install -U tqdm
بعد التثبيت، نقوم باستيراد المكتبات اللازمة:
import time, math, random, asyncio, hashlib, logging
import pandas as pd
import requests
from tqdm.auto import tqdm, trange
تتبع تقدم العمليات المتداخلة
يمكن استخدام tqdm لإنشاء شريط تقدم متداخل، مما يسمح بتتبع تقدم العمليات داخل حلقة. مثال على ذلك هو:
outer = trange(5, desc="Outer loop", leave=True)
for i in outer:
inner = trange(20, desc=f"Inner loop {i}", leave=False, position=1)
for j in inner:
time.sleep(0.01)
تتبع تقدم التنزيل باستخدام requests
يمكن أيضاً استخدام tqdm لتتبع تقدم تنزيل الملفات. في هذا المثال، نقوم بتنزيل ملف من الإنترنت مع تتبع التقدم:
url = "https://raw.githubusercontent.com/tqdm/tqdm/master/README.rst"
with requests.get(url, stream=True) as r:
total = int(r.headers.get("Content-Length", 0))
with open("tqdm_README.rst", "wb") as f:
with tqdm(total=total, unit="B", unit_scale=True) as bar:
for part in r.iter_content(chunk_size=1024):
f.write(part)
bar.update(len(part))
التكامل مع Pandas
تسمح مكتبة tqdm بالتكامل مع Pandas لتتبع تقدم العمليات على البيانات. يمكن استخدام progress_apply لتطبيق دالة على كل صف في DataFrame:
df = pd.DataFrame({"user_id": range(1, 2001), "value": [random.random() for _ in range(2000)]})
def heavy_fn(v: float) -> str:
time.sleep(0.0005)
return hashlib.sha256(str(v).encode()).hexdigest()[:10]
df["hash"] = df["value"].progress_apply(heavy_fn)
التعامل مع العمليات المتزامنة
يمكن استخدام thread_map وprocess_map لتوزيع الأحمال على عدة مسارات:
from tqdm.contrib.concurrent import thread_map
thread_results = thread_map(cpuish, nums, max_workers=8)
الخاتمة
لقد استعرضنا كيف يمكن استخدام مكتبة tqdm لتطوير تتبع تقدم فعال في مشاريع Python المختلفة. من خلال دمج tqdm في سير العمل، يمكن تحسين مراقبة الأداء وجعل العمليات الطويلة أكثر شفافية وسهولة في الاستخدام.
المصدر: MarkTechPost