[Python-Dev] Adding bytes.frombuffer() constructor to PEP 467

Yury Selivanov yselivanov.ml at gmail.com
Thu Jan 5 20:28:26 EST 2017



On 2017-01-05 7:11 PM, INADA Naoki wrote:
>> bytes.frombuffer(x) is bytes(memoryview(x)) or memoryview(x).tobytes().
>>
> There is pitfall: memoryview should be closed.
> So b = bytes.frombuffer(x) is:
>
> with memoryview(x) as m:
>      b = bytes(m)
>      # or b = m.tobytes()


Thinking more about this, and after looking at my own code in asyncpg 
and uvloop, I'm now in favor of adding bytes.frombuffer() with the 
proposed signature: ``bytes.frombuffer(byteslike, length=-1, offset=0)``

Inada-san is right, the memoryview should be explicitly released, but 
few do that. Instead, a lot of people simply rely on CPython refcounting 
semantics, which will cause the temporary memoryview be GCed asap.  That 
won't work so flawlessly in PyPy and will cause hard to understand bugs.

Yury


More information about the Python-Dev mailing list