[Python-checkins] cpython: asyncio: Change write buffer use to avoid O(N**2). Make write()/sendto() accept
Victor Stinner
victor.stinner at gmail.com
Wed Nov 27 23:57:25 CET 2013
2013/11/27 guido.van.rossum <python-checkins at python.org>:
> http://hg.python.org/cpython/rev/80e0040d910c
> changeset: 87617:80e0040d910c
> user: Guido van Rossum <guido at python.org>
> date: Wed Nov 27 14:12:48 2013 -0800
> summary:
> asyncio: Change write buffer use to avoid O(N**2). Make write()/sendto() accept bytearray/memoryview too. Change some asserts with proper exceptions.
Was this change discussed somewhere? Antoine told me on IRC that it
was discussed on the tulip mailing list. I would be nice to mention it
in the commit message (for the next change ;-).
> diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py
> --- a/Lib/asyncio/selector_events.py
> +++ b/Lib/asyncio/selector_events.py
> @@ -340,6 +340,8 @@
>
> max_size = 256 * 1024 # Buffer size passed to recv().
>
> + _buffer_factory = bytearray # Constructs initial value for self._buffer.
> +
Because the buffer type is now configurable, it would be nice to
explain in a short comment why bytearray fits better this use case.
(I like the bytearray object, so I like your whole changeset!)
> @@ -762,6 +776,8 @@
>
> class _SelectorDatagramTransport(_SelectorTransport):
>
> + _buffer_factory = collections.deque
> +
> def __init__(self, loop, sock, protocol, address=None, extra=None):
> super().__init__(loop, sock, protocol, extra)
> self._address = address
Why collections.deque is preferred here? Could you also please add a comment?
Victor
More information about the Python-checkins
mailing list