On Fri, Sep 6, 2013 at 9:19 AM, James Bergstra <bergs...@iro.umontreal.ca>wrote:
> def test_is(self): > a = np.empty(1) > b = np.empty(1) > if a.data is not b.data: > assert id(a.data) != id(b.data) # <-- fail > > I'm not familiar with the internals, but: In [27]: a = np.empty(1) In [28]: a.data Out[28]: <read-write buffer for 0x122df30, size 8, offset 0 at 0x3501860> so .data is a buffer object, wrapped around a particular pointer. In [29]: id(a.data) Out[29]: 55581376 In [30]: id(a.data) Out[30]: 55581728 but it looks like the buffer object itself is created on the fly -- so you are getting a different pyton object, even though it wraps the same data pointer. So you need to compare the value of the pointer compared, not the identity of the buffer object. Not sure how to get that value though, other that parsing __repr__ In [44]: a.data.__repr__().split()[-1][:-1] Out[44]: '0x3512100' ugly hack -- there must be a better way! But: In [38]: a = np.zeros((100,)) In [39]: b = a[50:] In [40]: a.data Out[40]: <read-write buffer for 0x1443990, size 800, offset 0 at 0x3501da0> In [41]: b.data Out[41]: <read-write buffer for 0x1617130, size 400, offset 0 at 0x3501c20> a and b share memory, but don't have the same data pointer as b's is offset. HTH, -Chris > I'm trying to write an alternate may_share_memory function. > > Thanks, > - James > > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > > -- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception chris.bar...@noaa.gov
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion