2011-07-04 32 views
10

Tôi muốn sử dụng python'smultiprocessing mô-đun để sử dụng máy chủ Linux đa lõi.Python - Chia sẻ một mảng mờ giữa các quá trình?

Tôi cần tất cả các quy trình để có quyền truy cập đọc/ghi vào cùng một bộ nhớ dùng chung.

Thay vì sử dụng list hoặc queue, có thể có một mảng đa chiều mờ numpy làm đối tượng được chia sẻ không?

Trả lời

6

Nhìn vào this. Tôi không có vẻ dễ dàng, nhưng nó có thể thực hiện được.

+0

cảm ơn bạn. Trông giống như một khởi đầu tốt. – user3262424

8

Tôi nghĩ rằng tôi biết những gì bạn đang tìm kiếm: https://bitbucket.org/cleemesser/numpy-sharedmem/issue/3/casting-complex-ndarray-to-float-in

Có một mô tả ngắn gọn về câu nói trang web: Một mô-đun bộ nhớ chia sẻ cho numpy bởi Sturla Molden và G. Varoquaux mà làm cho nó dễ dàng để chia sẻ bộ nhớ giữa các quy trình dưới dạng các mảng NumPy. Được đăng lên danh sách gửi thư của người dùng SciPy.

Tôi, bản thân tôi đang sử dụng nó theo cách đó. Chia sẻ mảng NumPy giữa các quá trình. Hoạt động rất tốt đối với tôi.

0

Tôi thấy rằng ngay cả khi bạn không sửa đổi mảng numpy của bạn sau khi fork() 'ing một loạt các quá trình con, bạn vẫn sẽ thấy RAM của bạn tăng vọt như childprocesses sao chép trên ghi đối tượng vì lý do nào.

Bạn có thể giới hạn (hoặc hoàn toàn giảm bớt?) Vấn đề này bằng cách thiết lập

"yourArray.flags.writeable = False" 

TRƯỚC fork() 'ing/Pool()' ing mà dường như để giữ cho RAM sử dụng xuống, và là một LOT ít rắc rối hơn các phương pháp khác :)

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