العلامة التقنية

موقع تقني عربي متخصص في أخبار التكنولوجيا والذكاء الاصطناعي

كيفية بناء تتبع تقدم متقدم باستخدام tqdm

بقلم: فريق تحرير العلامة التقنية التصنيف: تطوير الويب
كيفية بناء تتبع تقدم متقدم باستخدام 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

أحدث في تطوير الويب

مقالات سابقة في تطوير الويب