Hi all,
I'm wondering if anyone knows of a better way to convert a C++ protobuf into a Python protobuf.
I'm writing a Python module in C++ that wraps some of our protobuf-related functionality such as reading our logs.
Right now I'm serializing the C++ protobuf and then de-serializing it in Python.
I'd love to avoid this performance cost.
Here's roughly the code I'm using:
// Python setup code
const char pb_name[] = "foo.Message1";
PyObject* database_module = PyImport_ImportModule("google.protobuf.symbol_database");
PyObject* database = PyObject_CallMethod(database_module, "Default", nullptr);
PyObject *msg_class = PyObject_CallMethod(database, "GetSymbol", "s", pb_name);
...
PyObject* ConvertToPythonPB(const ::google::protobuf::Message &msg) {
// Serialize into string
auto serialized_msg = msg.SerializeAsString();
// Create a new message instance
PyObject *py_msg = PyObject_CallObject(msg_class, nullptr);
// Deserialize into the Pyhton object
PyObject *result = PyObject_CallMethod(py_msg, "ParseFromString", "y#",
serialized_msg.data(), serialized_msg.size());
...
return result;
}
I've looked into using the cpp protobuf implementation for Python, but I haven't had any luck calling that C++ code from my module.
Is there documentation that I'm overlooking? I can't find anything on how to do this more easily.
Thanks,
Phil
--
Thanks,
Phil
You received this message because you are subscribed to the Google Groups "Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to protobuf+u...@googlegroups.com.
To post to this group, send email to prot...@googlegroups.com.
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.