Tổng bình phương bằng ThreadPoolExecutor
Khi một phép tính lặp lại trên nhiều phần tử độc lập, ta giao mỗi phần tử cho một luồng
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: python-basics, python-functions.
Nội dung đề bài
Mô tả bài toán
Khi một phép tính lặp lại trên nhiều phần tử độc lập, ta giao mỗi phần tử cho một luồng trong bể luồng rồi thu kết quả về. ThreadPoolExecutor.map là cách gọn nhất: nó giữ đúng thứ tự đầu vào và trả về một iterator mà ta chỉ cần chuyển thành danh sách rồi cộng lại. Vì phép cộng có tính giao hoán, kết quả không phụ thuộc luồng nào chạy xong trước.
Yêu cầu
Viết hàm sum_of_squares(values, max_workers=3):
- Nếu values rỗng thì ném ValueError.
- Mở ThreadPoolExecutor(max_workers=max_workers) và dùng pool.map để tính bình
phương của từng phần tử trong values.
- Thu tất cả kết quả con rồi trả về tổng của chúng.
Quy ước nộp bài
Nộp hàm sum_of_squares trong solution.py. Hệ thống gọi hàm trực tiếp theo tên đối số và so giá trị trả về với kết quả soạn tay; không đọc dữ liệu từ stdin và không in ra stdout.
Input
- values: danh sách từ 1 đến 20 số nguyên, cho phép số âm và số 0.
- max_workers: số luồng trong bể, từ 1 đến 4.
Output
Một số nguyên là tổng bình phương của mọi phần tử trong values.
Ràng buộc
- Danh sách rỗng phải ném ValueError, không được trả về 0.
- Phải thu kết quả của mọi việc đã ném vào bể; bỏ qua giá trị trả về là sai.
- Kết quả phải giống nhau ở mọi lần chạy, không phụ thuộc thứ tự luồng hoàn thành.
- Không dùng sleep và không đo thời gian chạy.
Ví dụ 1
Input
sum_of_squares(values=[1, 2, 3])
Output
14
Ví dụ 2
Input
sum_of_squares(values=[-2, 0, 4])
Output
20
Giải thích
Với values = [1, 2, 3]: bình phương từng phần tử được 1, 4, 9, tổng là 1 + 4 + 9 = 14, nên hàm trả về 14.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
