2016-11-23 16 views
8

Có rất ít tài liệu API nghiêm ngặt (đọc: ZERO) cho multiprocessing.pool.ApplyResult. Tài liệu giải thích đa xử lý thông báo vềApplyResult s, nhưng không xác định chúng.Tài liệu về đa xử lý ở đâu.pool.ApplyResult?

Điều tương tự cũng xuất hiện để áp dụng cho multiprocessing.pool.Pool, mặc dù hướng dẫn xử lý đa xử lý Python dường như che nó tốt hơn.

Ngay cả những ApplyResulthelp() kết quả là ít ỏi:

| get(self, timeout=None) 
| 
| ready(self) 
| 
| successful(self) 
| 
| wait(self, timeout=None) 
  • Get()Ready() tôi nhận được. Đó là tiền phạt.

  • Tôi hoàn toàn không có ý tưởng wait() là để làm gì, cho rằng bạn là đối phó với một "hồ bơi", mà người ta sẽ giả định sẽ chờ đợi cho bạn trong các get() gọi. Đây có phải là "chờ kết quả, nhưng không nhận được nó ngay bây giờ" Hoặc là nó là một hệ điều hành chờ đợi kiểu? Và nếu có, điều đó sẽ là gì ngay cả có nghĩa là?

  • Tôi cũng không chắc chắn về những gì successful() là tất cả.

Trả lời

7

Quyền của bạn bị nhầm lẫn trong tài liệu: lớp này thực sự được ghi là AsyncResult, chứ không phải là ApplyResult. Hai là những cái tên khác nhau cho cùng lớp:

>>> multiprocessing.pool.ApplyResult is multiprocessing.pool.AsyncResult 
True 

các tên có thể đã được thay đổi tại một số điểm và các tài liệu không được cập nhật liên tục, nhưng tất cả những gì được ghi chép lại, nó chỉ ghi lại dưới cái tên sai. (Có a closed bug trong đó có người chỉ ra rằng các tài liệu đề cập đến asyncResult nhưng lớp được thực sự gọi là ApplyResult, vì vậy họ thêm asyncResult như một bí danh.)

+1

Tài liệu được tìm thấy tại: https://docs.python.org/2/library/multiprocessing.html#multiprocessing.pool.AsyncResult – Caramiriel

0

Đây là những gì tôi nhìn thấy từ mã:

  • ready(): trả về true nếu tác vụ chạy theo "chuỗi" sẵn sàng trả lại kết quả
  • get(timeout=None): chờ kết quả cho các đơn vị thời gian chờ (trong giây trôi nổi) và trả về kết quả khi hoàn thành thành công. Khi hết thời gian chờ, TimeoutError, khi quá trình hoàn tất không thành công sẽ làm tăng ngoại lệ liên quan.
  • wait(timeout=None): chờ đợi vào một biến điều kiện theo quy định của công nhân "chủ đề", theo threading.Condition.wait([timeout])không bao hàm Reaping của "chủ đề" trẻ em.
  • success(): nếu ready, trả lại True nếu kết quả của get() sẽ là một giá trị. Nếu không, trả về False (tức là kết quả sẽ là một ngoại lệ). Nếu xác nhận được bật, sẽ xác nhận nếu chưa sẵn sàng. Chức năng này có thể được sử dụng để tránh các ngoại lệ.