<br><br><div class="gmail_quote">On Sat, Sep 22, 2012 at 12:06 PM, Olivier Grisel <span dir="ltr"><<a href="mailto:olivier.grisel@ensta.org" target="_blank">olivier.grisel@ensta.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2012/9/22 Charles R Harris <<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>>:<br>
<div><div class="h5">><br>
><br>
> On Sat, Sep 22, 2012 at 11:52 AM, Charles R Harris<br>
> <<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>> wrote:<br>
>><br>
>><br>
>><br>
>> On Sat, Sep 22, 2012 at 11:31 AM, Gael Varoquaux<br>
>> <<a href="mailto:gael.varoquaux@normalesup.org">gael.varoquaux@normalesup.org</a>> wrote:<br>
>>><br>
>>> On Sat, Sep 22, 2012 at 11:16:27AM -0600, Charles R Harris wrote:<br>
>>> >    I think this is a bug, taking a view should probably update the<br>
>>> > offset.<br>
>>><br>
>>> OK, we can include a fix for that alongside with the patch to keep track<br>
>>> of the filename.<br>
>><br>
>><br>
>> It already tracks the file name<br>
>><br>
>> In [1]: a = np.memmap('tmp.mmap', dtype=np.float64, shape=50, mode='w+',<br>
>> offset=4)<br>
>><br>
>> In [2]: b = a[10:]<br>
>><br>
>> In [3]: b.filename<br>
>> Out[3]: '/home/charris/tmp.mmap'<br>
>><br>
>> or did you mean something else? I was guessing the fix could be mad in the<br>
>> same place that copied over the filename.<br>
>><br>
><br>
> You can also tell it is a memmap<br>
><br>
> In [4]: b._mmap<br>
> Out[4]: <mmap.mmap at 0x2312570><br>
<br>
</div></div>The problem is with:<br>
<br>
>>> c = np.asarray(b)<br>
>>> c.base<br>
<mmap.mmap at 0x2312570><br>
<br>
But you loose the pointer to the filename and the offset. In previous<br>
versions of numpy c.base used to be the np.memmap instance from which<br>
c is an array view. That allowed to make efficient pickling without<br>
any memory copy when doing single machine multiprocessing stuff by<br>
introspecting the base ancestry.<br>
<br>
This is no longer possible with the current base collapsing that is<br>
happening in numpy master. The only way would be to replace the<br>
mmap.mmap instance of a numpy.memmap object by a buffer implementation<br>
that would wrap or derive from mmap.mmap but also preserve the<br>
original filename and offset.<br></blockquote><div><br>Pickling was left as an unresolved problem after to offset updates to memmap. It would be nice to get all those issues fixed up.<br><br>As to the 1.7 release, I've been thinking we are violating the release early, release often maxim. Bugs trickle in at a constant rate and if we wait to fix them all we wait forever. So while it would be nice to have this in 1.7.0, I think we should also plan on a 1.7.1 bug fix release a few months after the 1.7.0 release.<br>
<br>Chuck<br></div><br></div>