Serialization/pickle
From: David Abrahams
Subject: Re: Boost.python serialization Newsgroups: gmane.comp.lib.boost.user Date: 2005-11-29 23:28:17 GMT (6 days, 17 hours and 9 minutes ago) "Drumheller, Michael"
writes: Thank you for the help. I have seen that link (the one you supplied) before, but I posted my question because that link in particular does not mention the words "Boost.Serialization" or "Archive" at all.
That's because the Boost Serialization library is unrelated.
I understand that it is technically unrelated. I am asking for information about about patterns of actual usage.
I suppose what I was really getting at, and was probably not very clear about (sorry :| ) was whether the specific approach (by N. Becker) of using a stringstream wrapped with a boost::archive::binary_oarchive is a standard idiom.
"Standard?"
OK: "common," "popular," "preferred," "regarded-as-best-practice," "effective."
(Basically, I would have thought that "python pickle boost::archive" would be a million-hit Google query, but it's only about a dozen. I find that weird. Do people just not serialize their C++ extensions very often?)
Yes, they do it very often. There's usually no need to touch Boost.Serialization in order to do so, though.
My extensions refer to one another, i.e., they form a significant object hierarchy in and of themselves. E.g., on the C++ side I might have an instance x of class X, which contains a vector of shared_ptrs p1,...,pn to instances y1,...,yn of another C++ class Y. At pickle-time there may be Python object z with a member u bound to to x and members w1,...,wm bound to a subset of the y1,...,yn. Is it even feasible to expect to be able to simple pickle.dump z and have it all work? Please keep in mind: I am just getting started wading into serializing a pretty complicated set of strongly interdependent Python and C++ objects and I am just trying to get my bearings. If this is the wrong forum to be asking these questions, please tell me. MD
-- Dave Abrahams Boost Consulting www.boost-consulting.com
"Drumheller, Michael"
From: David Abrahams
Subject: Re: Boost.python serialization Newsgroups: gmane.comp.lib.boost.user Date: 2005-11-29 23:28:17 GMT (6 days, 17 hours and 9 minutes ago) "Drumheller, Michael"
writes: Thank you for the help. I have seen that link (the one you supplied) before, but I posted my question because that link in particular does not mention the words "Boost.Serialization" or "Archive" at all.
That's because the Boost Serialization library is unrelated.
I understand that it is technically unrelated. I am asking for information about about patterns of actual usage.
I'm afraid I don't know that.
I suppose what I was really getting at, and was probably not very clear about (sorry :| ) was whether the specific approach (by N. Becker) of using a stringstream wrapped with a boost::archive::binary_oarchive is a standard idiom.
"Standard?"
OK: "common," "popular," "preferred," "regarded-as-best-practice," "effective."
Ditto.
(Basically, I would have thought that "python pickle boost::archive" would be a million-hit Google query, but it's only about a dozen. I find that weird. Do people just not serialize their C++ extensions very often?)
Yes, they do it very often. There's usually no need to touch Boost.Serialization in order to do so, though.
My extensions refer to one another, i.e., they form a significant object hierarchy in and of themselves. E.g., on the C++ side I might have an instance x of class X, which contains a vector of shared_ptrs p1,...,pn to instances y1,...,yn of another C++ class Y. At pickle-time there may be Python object z with a member u bound to to x and members w1,...,wm bound to a subset of the y1,...,yn. Is it even feasible to expect to be able to simple pickle.dump z and have it all work?
Yes. Of course you have to do some work in your wrapping code to say how X gets pickled.
Please keep in mind: I am just getting started wading into serializing a pretty complicated set of strongly interdependent Python and C++ objects and I am just trying to get my bearings. If this is the wrong forum to be asking these questions, please tell me.
Well, the C++-sig _might_ be more appropriate: http://www.boost.org/more/mailing_lists.htm#cplussig (cross-posted there) We (Boost Consulting) are actually planning to do something like this with one of our clients, but we haven't gotten started with it yet. I think everything should "just work" as long as you take care not to try to serialize the same object both from the C++ side (using Boost.Serialization) and from the Python side (using pickle). Because each system implements its own object tracking, you could end up representing the same object twice. HTH, -- Dave Abrahams Boost Consulting www.boost-consulting.com
participants (2)
-
David Abrahams
-
Drumheller, Michael