با استفاده از numpy.random.choice یک ماتریس بزرگ از اعداد صحیح تصادفی بسازید و میانگین هر سطر را با استفاده از multiprocessing به‌صورت موازی محاسبه کنید.

5.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:31

0.0

برای حل مسئله از numpy برای تولید داده‌ها (np.random.choice) و از ماژول multiprocessing برای اجرای هم‌زمان محاسبات استفاده کنید: ابتدا یک بردار از اعداد ممکن تعریف کرده و با np.random.choice آرایه‌ای با اندازه دلخواه بسازید و آن را به شکل ماتریس درآورید، سپس ماتریس را به بخش‌های (chunk) کوچکتر تقسیم کنید و با Pool.map یا Pool.imap تابعی را اجرا کنید که میانگین هر سطر را محاسبه کند. نکات: برای عملکرد بهتر در بسیاری از موارد استفاده از بردارمحوری numpy (np.mean(axis=1)) سریع‌تر و ساده‌تر از فرآیندهای چندپردازشی است؛ اگر حافظه و کپی شدن داده‌ها مسئله‌ساز است، از راهکارهای حافظه مشترک (multiprocessing.shared_memory) یا تقسیم‌بندی هوشمند استفاده کنید و برای نتایج تکرارشونده مقدار seed مناسب تنظیم نمایید.

توسط پژوهشگر در 202 روز قبل ساعت 02:31
دسته بندی ها: Python Python for beginner
sara در 202 روز قبل ساعت 09:22

برای تولید ماتریس بزرگ از اعداد صحیح با np.random.choice و محاسبه میانگین هر سطر با multiprocessing، معمولاً استفاده از np.mean(axis=1) به‌صورت برداری سریع‌تر است و ضرورتی برای multiprocessing در اغلب موارد وجود ندارد. اگر حافظه یا کپی داده‌ها مسئله است، از multiprocessing.shared_memory یا تقسیم‌بندی هوشمند داده‌ها به chunkها استفاده کنید تا داده‌ها دوباره کپی نشوند. برای تکرارپذیری نتایج seed را مشخص کنید و مطمئن شوید تابعی که به Pool.map داده می‌شود قابل pickle شدن است. در نهایت برای کاهش سربار، اندازه chunk را آزمایش کرده و می‌توانید از imap به‌جای map استفاده کنید تا نتایج به‌طور تدریجی بازگردند.

گزارش

1 پاسخ

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

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