এটি সেই ক্ষেত্রে বিকল্প উত্তর যেখানে tqdm_notebook আপনার পক্ষে কাজ করে না।
নিম্নলিখিত উদাহরণ দেওয়া:
from time import sleep
from tqdm import tqdm
values = range(3)
with tqdm(total=len(values)) as pbar:
for i in values:
pbar.write('processed: %d' %i)
pbar.update(1)
sleep(1)
আউটপুটটি এমন কিছু দেখায় (অগ্রগতিটি লাল দেখায়):
0%| | 0/3 [00:00<?, ?it/s]
processed: 1
67%|██████▋ | 2/3 [00:01<00:00, 1.99it/s]
processed: 2
100%|██████████| 3/3 [00:02<00:00, 1.53it/s]
processed: 3
সমস্যাটি হ'ল স্টডআউট এবং স্ট্ডার থেকে আউটপুটটি নতুন লাইনের শর্তে অবিচ্ছিন্নভাবে এবং পৃথকভাবে প্রক্রিয়াজাত করা হয়।
যদি বলি যে জপিটার প্রথম লাইনে স্ট্যাডারে পাবে এবং তারপরে স্টাডআউটে "প্রক্রিয়াজাত" আউটপুট। তারপরে একবার অগ্রগতি আপডেট করার জন্য স্ট্যাডারে একটি আউটপুট পেলে এটি ফিরে যাবে না এবং প্রথম লাইনটি আপডেট করবে না কারণ এটি কেবল শেষ লাইনটি আপডেট করবে। পরিবর্তে এটি একটি নতুন লাইন লিখতে হবে।
কর্মসংস্থান 1, stdout লেখার
এর পরিবর্তে একটি স্ট্যান্ডআউটে উভয়কে আউটপুট দেওয়া হবে:
import sys
from time import sleep
from tqdm import tqdm
values = range(3)
with tqdm(total=len(values), file=sys.stdout) as pbar:
for i in values:
pbar.write('processed: %d' % (1 + i))
pbar.update(1)
sleep(1)
আউটপুট পরিবর্তিত হবে (আর লাল হবে না):
processed: 1 | 0/3 [00:00<?, ?it/s]
processed: 2 | 0/3 [00:00<?, ?it/s]
processed: 3 | 2/3 [00:01<00:00, 1.99it/s]
100%|██████████| 3/3 [00:02<00:00, 1.53it/s]
এখানে আমরা দেখতে পাচ্ছি যে লাইপিটার শেষ হওয়া অবধি জুপিটার পরিষ্কার হবে বলে মনে হচ্ছে না। আমরা স্পেস যোগ করে এর জন্য আরও একটি কাজ যোগ করতে পারি। যেমন:
import sys
from time import sleep
from tqdm import tqdm
values = range(3)
with tqdm(total=len(values), file=sys.stdout) as pbar:
for i in values:
pbar.write('processed: %d%s' % (1 + i, ' ' * 50))
pbar.update(1)
sleep(1)
যা আমাদের দেয়:
processed: 1
processed: 2
processed: 3
100%|██████████| 3/3 [00:02<00:00, 1.53it/s]
কার্যবিধি 2, পরিবর্তে বর্ণনা সেট করুন
এটি সাধারণত দুটি আউটপুট না পেয়ে আরও সরাসরি এগিয়ে যেতে পারে তবে পরিবর্তে বর্ণনাটি আপডেট করতে পারে, যেমন:
import sys
from time import sleep
from tqdm import tqdm
values = range(3)
with tqdm(total=len(values), file=sys.stdout) as pbar:
for i in values:
pbar.set_description('processed: %d' % (1 + i))
pbar.update(1)
sleep(1)
আউটপুট সহ (প্রক্রিয়া চলাকালীন বিবরণ আপডেট হয়েছে):
processed: 3: 100%|██████████| 3/3 [00:02<00:00, 1.53it/s]
উপসংহার
আপনি বেশিরভাগ ক্ষেত্রে সাদামাটা tqdm দিয়ে কাজ করতে পারেন। তবে যদি tqdm_notebook আপনার জন্য কাজ করে তবে কেবল এটি ব্যবহার করুন (তবে আপনি সম্ভবত এটি খুব বেশি পড়তে পারবেন না)।
tqdm_notebook
করতে পারিprint
, এবং এটি অগ্রগতি বারকে প্রভাবিত করে না।