2010-09-29 37 views
25

Nếu tôi có một đối tượng hồ bơi với 2 bộ vi xử lý ví dụ:"chunksize" tham số trong multiprocessing.Pool.map Python của

p=multiprocessing.Pool(2) 

và tôi muốn để lặp qua một danh sách các tập tin trên thư mục và sử dụng chức năng bản đồ

ai đó có thể giải thích sự chunksize của chức năng này là gì:

p.map(func, iterable[, chunksize]) 

Nếu tôi đặt chunksize ví dụ đến 10 không có nghĩa là cứ 10 file nên được xử lý với một proces sor?

Trả lời

24

Nhìn vào documentation for Pool.map có vẻ như bạn đang gần như chính xác: các tham số chunksize sẽ gây ra iterable được chia thành từng miếng nhỏ khoảng kích thước đó, và mỗi phần được gửi như một nhiệm vụ riêng biệt. Vì vậy, trong ví dụ của bạn, có, map sẽ mất 10 (xấp xỉ) đầu tiên, gửi nó như một nhiệm vụ cho một bộ xử lý đơn lẻ ... sau đó 10 tiếp theo sẽ được gửi dưới dạng tác vụ khác, v.v. Lưu ý rằng nó không có nghĩa rằng điều này sẽ làm cho các bộ xử lý thay thế mỗi 10 tập tin, nó hoàn toàn có thể là bộ xử lý # 1 kết thúc lên nhận được 1-10 và 11-20, và bộ vi xử lý # 2 được 21-30 và 31-40.

Các vấn đề liên quan