2011-12-24 26 views
15

Sự khác nhau giữa multiprocessing.Eventmultiprocessing.managers.SyncManager.Event là gì. Khi nào tôi sử dụng mỗi? Tại sao hai đối tượng khác nhau tồn tại?python: multiprocessing Event

Câu hỏi tương tự cho các đối tượng tương tự khác hiện có trong multiprocessing trực tiếp và cũng có trong Manager (Lock, vv)

Trả lời

11

Thật không may, câu trả lời đưa ra chỉ là không phải là rất đúng và những người khác không được trao.

Tôi tự tìm kiếm và thấy rằng multiprocessing.Event có thể được sử dụng để đồng bộ giữa các quy trình, hoàn toàn ổn.

Event và các đối tượng khác từ multiprocessing.Manager tồn tại để có thể đồng bộ hóa mọi thứ giữa các quá trình chạy trên các máy khác nhau qua ổ cắm dưới mui xe. Họ cũng có thể được sử dụng đồng bộ hóa trên máy tính duy nhất, nhưng ít hiệu quả cho việc này hơn là chỉ sử dụng đối tượng đồng bộ từ multiprocessing.synchronize (như EventLock và những người khác)

+1

Bạn có thể quản lý người dùng trên cùng một máy, ý tưởng là cung cấp các đối tượng proxy có thể kết hợp với các tài nguyên chia sẻ thực được xuất bản thông qua Trình quản lý. Theo một cách nào đó, đó là một loại "RPC-lite" – edomaur

+0

Bạn có thể cho biết nơi bạn đã tìm thấy thông tin đó không? – utapyngo

+0

@utapyngo: trong phần "16.6.1.4. Chia sẻ trạng thái giữa các quy trình", tài liệu 2.7, đặc biệt là đọc phần cuối cùng. Và cũng có một số hướng dẫn googling và đọc – zaharpopov

1

multiprocessing.Manager về cơ bản là một quá trình chuyên ngành mà sẽ tạo ra trường hợp multi của nguyên thủy đồng bộ theo yêu cầu trong không gian địa chỉ của chính nó và cho phép bạn truy cập chúng thông qua proxy RPC. Các nguyên thủy hoạt động giống nhau, và chúng có tính linh hoạt cao hơn có thể truy cập được từ các máy chủ từ xa (sử dụng TCP trong trường hợp từ xa).