2012-07-23 24 views
15

Tôi đang viết một ứng dụng bằng Python và tôi cần chạy một số tác vụ cùng một lúc. Việc đa xử lý mô-đun cung cấp quá trình lớp và mô-đun concurrent.futures có lớp ProcessPoolExecutor. Cả hai dường như sử dụng nhiều quy trình để thực hiện các tác vụ của chúng, nhưng các API của chúng khác nhau. Tại sao tôi nên sử dụng cái kia?Ưu điểm của concurrent.futures trên đa xử lý trong Python là gì?

Tôi biết rằng concurrent.futures đã được thêm vào Python 3, vì vậy tôi đoán nó tốt hơn?

+0

Bản sao của http://stackoverflow.com/questions/24896193/whats-the-difference-between-pythons-multiprocessing-and-concurrent-futures nhưng không nên đóng vì câu trả lời cung cấp chi tiết không có ở nơi khác. – max

Trả lời

12

Động lực cho concurrent.futures được bao gồm trong PEP.

Trong kinh nghiệm thực tế của tôi concurrent.futures cung cấp mô hình lập trình thuận tiện hơn cho các tình huống gửi và theo dõi tác vụ lâu dài. Một chương trình gần đây tôi đã viết bằng cách sử dụng concurrent.futures liên quan đến việc theo dõi một thư mục cho các tập tin đến trong một cửa sổ 2-3 giờ, dịch mỗi tập tin khi nó đến một nhiệm vụ, gửi nó và như vậy. Các đối tượng tương lai được trả về bởi ProcessPoolExecutor cho phép theo dõi trạng thái tác vụ, cung cấp các báo cáo trạng thái trung gian, vv một cách thuận tiện.

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