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
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to