پاسخ تمرینات آموزش ماژول Asyncio – کلاس Queue

Please login to bookmark Close

پاسخ تمرین ۱

متد put همانجا منتظر می‌ماند تا جای کافی در صف باز شود، چون این متد یک awaitable است. اما put_nowait هیچ‌وقت منتظر نمی‌ماند؛ اگر صف پر باشد، بلافاصله خطای QueueFull را پرتاب می‌کند، نه اینکه صبر کند.

پاسخ تمرین ۲

هر آیتمی که با put داخل صف گذاشته شده، باید در نهایت با get برداشت شود، و برای هرکدام از آن آیتم‌ها، مصرف‌کننده باید بعد از تمام شدن کارش متد task_done را صدا بزند. join فقط وقتی از منتظر ماندن دست می‌کشد که برای همه‌ی آیتم‌های put شده، یک task_done متناظر صدا زده شده باشد.

پاسخ تمرین ۳

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

پاسخ تمرین ۴

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

Please login to bookmark Close
نظرات

دیدگاهتان را بنویسید

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

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

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم