[Numpy-discussion] numpy/Windows shared arrays between processes?

Sebastian Haase haase@msg.ucsf....
Tue Oct 9 07:22:36 CDT 2007


On 10/9/07, David Cournapeau <david@ar.media.kyoto-u.ac.jp> wrote:
> Sebastian Haase wrote:
> > Hi!
> > I was in fact experimenting with this. The solution seemed to lie in
> > "simple" memmap as it is implemented in Windows:
> >
> > import numpy as N
> > def arrSharedMemory(shape, dtype, tag="PriithonSharedMemory"):
> >     """
> >     Windows only !
> >     share memory between different processes if same `tag` is used.
> >     """
> >     itemsize = N.dtype(dtype).itemsize
> >     count = N.product(shape)
> >     size =  count * itemsize
> >
> >     import mmap
> >     sharedmem = mmap.mmap(0, size, tag)
> >     a=N.frombuffer(sharedmem, dtype, count)
> >     a.shape = shape
> >     return a
> >
> > For explaintion look up the microsoft site for the mmap documentation.
> > And/or the Python-doc for mmap.
> > (( I have to mention, that I could crash a process while testing this ... ))
> >
> > If anyone here would know an equivalent way of doing this on
> > Linux/OS-X  we were back to a cross-platfrom function.
> >
> AFAIK, the tag thing is pretty much windows specific, so why not just
> ignoring it on non windows platforms ? (or interpreting the tag argument
> as the flag argument for mmap, which would be consistent with python
> mmap API ?)
>
As I recollect, the tag thing was the key for  turning the mmap into a
"not really memmaped file", that is, a memmap without a corresponding
file on the disk.
In other words, isn't a mmap ( without(!) tag ) always bound to a
"real" file in the file system ?

-Sebastian


More information about the Numpy-discussion mailing list