On Thu, May 8, 2014 at 5:10 PM, Simon <simo...@gmail.com> wrote: > I'd like to make a C memory buffer available inside Python via the Python > C/API without copying that memory into Python. How to do this? I've read [1] > but it's not clear that this functionality exists. In javascript it's > possible using String::NewExternal() [2]. > > "Creates a new external string using the ASCII data defined in the given > resource. > > When the external string is no longer live on V8's heap the resource will be > disposed by calling its Dispose method. The caller of this function should > not otherwise delete or modify the resource. Neither should the underlying > buffer be deallocated or modified except through the destructor of the > external string resource." > > [1] https://docs.python.org/2/c-api/buffer.html > [2] > http://izs.me/v8-docs/classv8_1_1String.html#a07c47bf675b802c550984fa24511a589
In 3.3 or greater you can create a memoryview directly from a char* using this this call: https://docs.python.org/3/c-api/memoryview.html#c.PyMemoryView_FromMemory Otherwise, you can do it using the buffer protocol but it takes a little more work than just a function call. You'll need to define in C an extension type that will wrap your C buffer and that implements the buffer protocol, and then objects of that type can be used as the basis for memoryviews (or other buffer consumers). -- https://mail.python.org/mailman/listinfo/python-list