[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