Tôi hoàn toàn mới để đa xử lý. Tôi đã đọc tài liệu về mô-đun đa xử lý. Tôi đọc về hồ bơi, chủ đề, hàng đợi, vv nhưng tôi hoàn toàn bị mất.Chiến lược nào để sử dụng với đa xử lý trong python
Điều tôi muốn làm với đa xử lý là, chuyển đổi trình tải xuống http khiêm tốn của tôi, để làm việc với nhiều người lao động. Những gì tôi đang làm hiện tại là tải xuống một trang, phân tích trang để nhận các liên kết thú vị. Tiếp tục cho đến khi tất cả các liên kết thú vị được tải xuống. Bây giờ, tôi muốn thực hiện điều này với đa xử lý. Nhưng tôi không có ý tưởng tại thời điểm này, làm thế nào để tổ chức dòng chảy công việc này. Tôi đã có hai suy nghĩ về điều này. Thứ nhất, tôi nghĩ về việc có hai hàng đợi. Một hàng đợi cho các liên kết cần được tải xuống, khác để liên kết được phân tích cú pháp. Một công nhân, tải xuống các trang và thêm chúng vào hàng đợi cho các mục cần được phân tích cú pháp. Và quá trình khác phân tích cú pháp một trang và thêm các liên kết mà nó thấy thú vị vào hàng đợi khác. Các vấn đề tôi mong đợi từ phương pháp này là; trước hết, tại sao phải tải xuống một trang tại một thời điểm và phân tích một trang tại một thời điểm. Hơn nữa, làm thế nào để một quá trình biết rằng có các mục được thêm vào hàng đợi sau này, sau khi nó cạn kiệt tất cả các mục từ hàng đợi.
Một cách tiếp cận khác mà tôi đã nghĩ đến khi sử dụng là điều đó. Có một hàm, có thể được gọi với một url làm đối số. Hàm này tải xuống tài liệu và bắt đầu phân tích cú pháp nó cho các liên kết. Mỗi khi nó gặp một liên kết thú vị, nó ngay lập tức tạo ra một luồng mới chạy hàm giống hệt như chính nó. Vấn đề tôi có với cách tiếp cận này là, làm thế nào để tôi theo dõi tất cả các quá trình sinh ra xung quanh, làm cách nào để biết liệu vẫn còn các tiến trình để chạy hay không. Ngoài ra, làm cách nào để hạn chế số lượng quy trình tối đa.
Vì vậy, tôi hoàn toàn bị mất. Bất cứ ai có thể đề xuất một chiến lược tốt, và có lẽ hiển thị một số mã ví dụ về làm thế nào để đi với ý tưởng.
Điều này đã được thảo luận ở một số độ sâu [trước đây] (http://stackoverflow.com/questions/731993/multiprocessing-or-multithreading) – brc
Tôi có thể đề nghị bạn xem thư viện eventlet không? Bạn có thể thấy nó phù hợp với mục đích của bạn tốt hơn sau đó sử dụng đa xử lý. –