Creating a python extension that works with multiprocessing.Queue
Travis Miller
raphtee at gmail.com
Thu Mar 19 22:16:29 EDT 2009
I'm on linux actually. I found that so long as I implement
__reduce__, then pickling works, and my extension works with Queue
objects correctly. So far the C Api is really cool. I can do all the
math stuff where I need the speed, and still be able to use python
which is way more expressive.
travis
On Mar 17, 8:43 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
wrote:
> En Sun, 15 Mar 2009 01:51:35 -0200, Travis Miller <raph... at gmail.com>
> escribió:
>
> > I am very new to the python C API, and have written a simple type
> > called SU2 that has 4 members that are all doubles. Everything seems
> > to work fine (can import my module and instantiate the new type and
> > act on it with various methods I have defined), except for when I
> > attempt to use my new type with multiprocessing.Queue (by the way I am
> > working with python 2.6).
>
> > So when I declare my object instance and call the put() method on the
> > Queue instance, the object I get out with the get() method of the same
> > Queue instance is not the same object. The four members of the
> > object are all coming through as all zeros. Below is the snippet of
> > code.
>
> Are you on Windows? multiprocessing uses pickles to transfer objects
> between processes. See if you can dump and load those kind of objects. If
> not, you may need to implement __getstate__/__setstate__ or __reduce__
> Seehttp://docs.python.org/library/pickle.html
>
> --
> Gabriel Genellina
More information about the Python-list
mailing list