Tôi có cấu trúc dữ liệu phức tạp (loại do người dùng xác định) mà trên đó một số lượng lớn các phép tính độc lập được thực hiện. Cấu trúc dữ liệu về cơ bản là không thay đổi. Tôi nói về cơ bản, bởi vì mặc dù giao diện trông bất biến, nội bộ một số đánh giá lười biếng đang xảy ra. Một số thuộc tính được tính toán lazily được lưu trữ trong các từ điển (giá trị trả về của các hàm tốn kém theo tham số đầu vào). Tôi muốn sử dụng mô-đun Pythons multiprocessing để song song các tính toán này. Có hai câu hỏi trong đầu tôi.Chia sẻ dữ liệu giữa các quy trình trong Python
- Làm cách nào để chia sẻ cấu trúc dữ liệu tốt nhất giữa các quy trình?
- Có cách nào để xử lý vấn đề đánh giá lười biếng mà không sử dụng khóa (nhiều quy trình viết cùng một giá trị) không?
Cảm ơn trước mọi câu trả lời, nhận xét hoặc câu hỏi khai sáng!
Bạn đang nói chuyện phức tạp đến mức nào? Khi một 'phép tính độc lập' được gửi đi, bạn có biết trước khi bắt đầu các thuộc tính lười biếng nào cần thiết không? – MattH
Vấn đề về cơ bản là việc xác thực chéo một lần bỏ qua trên một tập hợp lớn các mẫu dữ liệu. Nó mất khoảng hai giờ trên máy tính của tôi trên một lõi đơn, nhưng tôi có quyền truy cập vào một máy với 24 lõi và muốn tận dụng sức mạnh đó. Tôi không biết trước các thuộc tính nào sẽ là cần thiết bởi một phép tính duy nhất, nhưng tôi biết rằng cuối cùng (trên tất cả các tính toán) tất cả các thuộc tính sẽ là cần thiết, vì vậy tôi có thể tải chúng lên phía trước (sẽ phải kiểm tra mặc dù). –