Tôi có một ứng dụng python đa quy trình (các quá trình được sinh ra bởi uwsgi) cần lưu các biến trong RAM, sau đó đọc và cập nhật các biến đó từ nhiều quy trình khác nhau. Tôi biết có rất nhiều tùy chọn bộ nhớ đệm có sẵn, nhưng tất cả những tùy chọn tôi tìm thấy chỉ có thể lưu trữ chuỗi. Có thể cho các quy trình python khác nhau truy cập cùng một bộ nhớ ảo, và do đó chia sẻ dữ liệu mà không bao giờ chuyển đổi nó hay thậm chí sao chép nó?Quy trình python có thể chia sẻ các đối tượng trực tiếp không?
Trả lời
Bên cạnh POSH, Python Shared Objects,, ít nhất là một phần của những gì bạn muốn làm (đặt đối tượng Python trong bộ nhớ chia sẻ SvsV-IPC và sửa đổi chúng từ nhiều quy trình) và có thể làm điểm bắt đầu phát triển mô-đun mở rộng của riêng bạn sự cần thiết bạn có với các quy trình máy chủ được tạo ra bằng wsgi, không có nhiều thứ khác trong thế giới Python (mà tôi biết ...) không phụ thuộc vào các đối tượng tẩy/giải nén khi chia sẻ chúng giữa các tiến trình.
Một điều khác cũng có trong đầu là Pyro, chia sẻ qua kết nối mạng tùy ý giữa các quy trình (vì vậy, cũng có thể chia sẻ qua các ổ cắm miền Unix) và trải nghiệm linh hoạt hơn multiprocessing có thể cung cấp cho (proxy) quản lý đối tượng.
Những gì bạn cũng có thể xem là liệu bạn có thể nhận được máy chủ web đang thúc đẩy ứng dụng WSGI của bạn đến các quy trình không phải ngã ba, mà là sử dụng luồng; theo cách này, bạn chỉ cần sử dụng dữ liệu chung của Python cho bộ nhớ cache đối tượng được chia sẻ mà sau đó bạn có thể truy cập từ tất cả các trình xử lý WSGI được sinh ra. Một WSGI-server luồng là ví dụ như CherryPy-builtin wsgiserver, mà tôi đang sử dụng cho một dự án có chính xác nhu cầu bạn đang có. mod_wsgi cũng hoạt động cho ngữ cảnh của bạn trong trường hợp bạn định cấu hình Apache với MPM của nhân viên (để các luồng Apache và không chia rẽ các quy trình mới).
Nếu tất cả những thứ đó không phải là một lựa chọn, cách trích xuất quy trình thực tế bạn đang làm trong máy chủ web sang một quy trình bên ngoài, các trang web liên lạc với một số cơ chế RPC để đẩy yêu cầu công việc và kéo dữ liệu? Máy chủ xử lý "backend" có thể là một quá trình Python đa luồng đơn giản, cung cấp giao diện XML-RPC thông qua thư viện chuẩn SimpleXMLRPCServer hoặc một số thứ tương tự.
Tôi không thể kiểm tra điều này ngay bây giờ vì máy tính của tôi đang được sửa chữa, nhưng tôi nghĩ rằng luồng là câu trả lời tôi đang tìm kiếm. Tôi đã không rõ ràng trước đây: máy chủ là uWSGI, mà tôi khá chắc chắn có thể sử dụng chủ đề thay vì forking. Tôi không biết điều đó sẽ ảnh hưởng như thế nào đến hiệu suất, nhưng đó là một câu hỏi khác. –
- 1. Chia sẻ các đối tượng trên các quy trình Java
- 2. Chia sẻ một đối tượng phức tạp giữa các quy trình Python?
- 3. Chia sẻ dữ liệu giữa các quy trình trong Python
- 4. Chia sẻ không tiếp giáp Numpy Array
- 5. Bộ nhớ chia sẻ giữa các quá trình python
- 6. Các ứng dụng có sử dụng nhiều quy trình chia sẻ một cá thể Dalvik không?
- 7. Python - Chia sẻ một mảng mờ giữa các quá trình?
- 8. Đối tượng chia sẻ trên không
- 9. Không thể mở tệp đối tượng được chia sẻ
- 10. Chia sẻ các đối tượng có thuộc tính xử lý tệp giữa các quá trình
- 11. Chia sẻ HDC giữa các quy trình khác nhau
- 12. Chia sẻ đối tượng (lớp thể hiện) trong python bằng cách sử dụng các trình quản lý
- 13. Các đối tượng instantiating trong bộ nhớ chia sẻ C++
- 14. Tại sao Python không thể tìm thấy các đối tượng được chia sẻ trong các thư mục trong sys.path?
- 15. Trong Java, các thành viên lớp tĩnh có được chia sẻ giữa các chương trình không?
- 16. Đối tượng được chia sẻ Flash (nghĩa là cookie flash) không được chia sẻ với Chrome
- 17. Chia sẻ các đối tượng và tránh globals trong node.js
- 18. Cách chia sẻ đối tượng giữa các ứng dụng java?
- 19. libclntsh.so.11.1: không thể mở tệp đối tượng được chia sẻ
- 20. Chia sẻ biến giữa các quá trình
- 21. Có thể xác định các quy ước đặt tên tùy chỉnh để chia sẻ lại không?
- 22. Quy trình VS thread: có thể hai quá trình chia sẻ cùng một bộ nhớ chia sẻ? có thể hai chủ đề?
- 23. Cách chia sẻ từ điển giữa nhiều quy trình trong python mà không cần khóa
- 24. ràng buộc khi tự động tải một đối tượng được chia sẻ từ một đối tượng được chia sẻ khác?
- 25. Cách chia sẻ biến trong thư viện đối tượng được chia sẻ
- 26. C++ chia sẻ đối tượng lớp đơn giữa nhiều quá trình
- 27. ABAP: đồng bộ hóa đối tượng bộ nhớ chia sẻ
- 28. Tôi có thể trực tiếp thêm bản ghi làm đối tượng trong danh sách chuỗi không?
- 29. Tôi có thể gọi javascript trực tiếp trong WPF mà không cần sử dụng đối tượng trình duyệt
- 30. Các lớp cơ sở Python chia sẻ các thuộc tính?
bản sao có thể có của [Bộ nhớ chia sẻ hệ thống V bằng Python?] (Http://stackoverflow.com/questions/2219604/system-v-shared-memory-in-python) – Amber
Kiểm tra [xử lý] (http: //pypi.python.org/pypi/processing). – Keith
Tôi đã kiểm tra cả hai. sysv_ipc chỉ lưu trữ các chuỗi, và 'xử lý' sẽ không hoạt động bởi vì các tiến trình được sinh ra bởi uwsgi, không phải python. –