یک صف FIFO در پایتون با استفاده از ماژول queue یا collections.deque پیادهسازی کنید که یک لیست از اعداد را به عنوان وظایف دریافت کند، آنها را در صف قرار دهد و سپس هر عدد را با یک تابع پردازش (مثلاً محاسبهٔ جذر یا مربع) یکییکی از صف خارج و پردازش کند و نتایج را به صورت لیست بازگرداند.
2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:06 0.0
میتوانید از collections.deque برای یک پیادهسازی ساده و سریع (append و popleft) یا از queue.Queue برای صفهای ایمن در برابر رشتهها استفاده کنید. تابعی بنویسید که ورودیاش لیست اعداد و یک تابع پردازشی باشد، ابتدا همهٔ اعداد را در صف قرار دهد، سپس تا خالی شدن صف با استفاده از put/get یا append/popleft هر عنصر را پردازش کرده و نتیجه را در لیست خروجی ذخیره کند. نکتهها: برای کار با مجموعههای بزرگ در محاسبات عددی میتوانید به جای پردازش تکبهتک از numpy برای محاسبات برداری استفاده کنید و در محیطهای چندنخی از queue.Queue برای همگامسازی استفاده نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای کار با لیستهای بزرگ، استفاده از numpy برای محاسبات برداری میتواند سرعت را به طور چشمگیری افزایش دهد و در عین حال میتواند خروجی را به صورت دستهای پردازش کند. اگر از threading استفاده میکنید، از queue.Queue به جای deque استفاده کنید تا صف در برابر تردها ایمن باشد. تابعی که ورودیاش لیست اعداد و یک تابع پردازشی باشد، میتواند ابتدا عناصر را به صف اضافه کند، سپس با استفاده از put/get یا append/popleft پردازشها را واحد به واحد انجام داده و خروجی را در یک لیست جمعآوری کند. نکتهٔ آخر اینکه اگر هر پردازش مستقل است، استفاده از پردازش دستهای با numpy یا مدل بدون صف ممکن است سادهتر و سریعتر باشد.
گزارش