با استفاده از یک صف (queue) در پایتون، برنامه‌ای بنویسید که یک لیست از اعداد را گرفته و به‌صورت FIFO هر عدد را از صف بردارد، توان دوم آن را محاسبه کند و نتایج را به همان ترتیب خروجی دهد.

4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 03:09

0.0

برای حل این مسئله می‌توانید از collections.deque برای پیاده‌سازی سریع و سادهٔ صف استفاده کنید: اعداد را در صف قرار دهید، سپس در حلقه‌ای تا زمانی که صف خالی نشده عنصرها را با popleft() بردارید و توان دوم را محاسبه و در لیستی ذخیره کنید. اگر می‌خواهید شبیه‌سازی ساده‌ای از پردازش موازی در محیط‌های HPC داشته باشید، می‌توانید از queue.Queue یا multiprocessing.Queue به‌همراه چند پردازشگر استفاده کنید تا پروسه‌ها عنصرها را بردارند و محاسبات را انجام دهند—در این حالت به هماهنگی برای حفظ ترتیب خروجی دقت کنید (مثلاً ذخیره نتایج با اندیس اصلی). نکات: برای کارآمدی بیشتر از deque استفاده کنید، و اگر چند نخ یا پردازش به‌کار می‌برید از صف‌های thread/process-safe و مکانیزم‌های هم‌زمانی برای جلوگیری از شرایط رقابتی بهره ببرید.

توسط پژوهشگر در 220 روز قبل ساعت 03:09
دسته بندی ها: Python Python for beginner
nima در 220 روز قبل ساعت 07:22

نکتهٔ کاربردی: استفاده از collections.deque برای صف‌ها مناسب است چون popleft() در O(1) انجام می‌شود و از کندی لیست‌های معمولی جلوگیری می‌کند. برای حفظ ترتیب خروجی در حالت‌های چندرشته‌ای یا چندپردازشی، نتایج را با اندیس اصلی نگه دارید یا پس از تکمیل همه کارها مرتب کنید. اگر هم هم‌زمانی بین نخ‌ها یا فرایندها وجود دارد، از queue.Queue یا multiprocessing.Queue برای ایمنی در برابر رقابت استفاده کنید. همچنین با اندازهٔ ورودی بزرگ، پردازش پیاپی و یا خروجی به فایل می‌تواند مصرف حافظه را کاهش دهد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری