Tôi đang viết chương trình python cần xử lý rất nhiều tin nhắn được mã hóa protobuf nhỏ nhưng phức tạp. Tôi đã cố gắng sử dụng Python thực hiện các bộ đệm giao thức, được viết bằng python tinh khiết, nhưng hiệu suất của nó thực sự là khủng khiếp.sử dụng swig để liên kết bộ đệm giao thức google
Vì vậy, tôi đang xem xét một giải pháp rõ ràng là some folks got to work - sử dụng protoc để tạo tệp C++, sau đó sử dụng swig để quấn chúng bằng python. Vấn đề là tôi không thể đến một mô-đun Python đang hoạt động.
Khi chạy róc rách với
-includeall
, để đảm bảo rằng tất cả các lớp cơ sở/tiện ích của Google được sử dụng bởi lớp thông điệp được tạo ra cũng được bọc - uống một lân thất bại, phàn nàn về hệ thống thiếu bao gồm các file (ví dụ: "chuỗi") . Tôi không thể làm việc xung quanh điều này với -I cờ hoặc sao chép toàn bộ bao gồm các thư mục. Môi trường là Ubuntu 10.04, protobuf 2.2.0, swig 1.3.40, gcc 4.4.3.Nếu không có lá cờ này, tôi có thể tạo ra một mô-đun python cho các lớp nhắn của tôi, nhưng mô-đun này là vô ích: Python lớp thông điệp được tạo ra đang thiếu tất cả các chức năng được cung cấp bởi các lớp cơ sở tin - trong cụ thể tất cả trừ một trong số các phương pháp de-serialization. Một phương thức còn lại (MergePartialFromCodedStream) sẽ không chạy, vì nó yêu cầu đầu vào luồng loại CodedInputStream (là một phần của cơ sở hạ tầng protobuf và do đó không được gói với swig).
Tôi đã tự hỏi liệu có ai có ví dụ làm việc để chuyển sang làm việc trên đầu trang của protobuf-C++ không?
Cách khác - có ví dụ về một số giải pháp khác, chẳng hạn như phần mở rộng Python được đề cập trong cùng một trang không? Mặc dù điều đó có vẻ giống như một giải pháp bảo trì cao cho sơ đồ động của tôi ...
Nếu không có điều nào trong số này hoạt động, tôi đang xem xét việc thả python có lợi cho Groovy - giả sử rằng việc triển khai bộ đệm giao thức Java sẽ hiệu quả hơn. Bất kỳ bình luận về điều đó?
Muchas Gracias!
Cảm ơn John ... Cuối cùng tôi đã được sắp xếp này bằng cách sử dụng công cụ Greplin (https://github.com/Greplin) - rất khuyến khích! –