[Python-ideas] Extend socket.accept to put accepted socket in non-blocking mode

Charles-François Natali cf.natali at gmail.com
Fri Mar 7 23:33:27 CET 2014


accept4() was added for atomicity (O_CLOEXEC), not performance.
For pipe2() vs pipe(), this could make a measurable difference because the
base syscall is so fast, but for accept(), which is a blocking syscall,
shaving one or two syscalls are unlikely to yield any performance gain.

IMO that's not a reason good enough to make accept() signature more complex.

cf



2014-03-07 11:14 GMT+00:00 Saúl Ibarra Corretgé <saghul at gmail.com>:

> On 03/07/2014 11:40 AM, Antoine Pitrou wrote:
>
>> On Fri, 07 Mar 2014 10:37:58 +0100
>> Saúl Ibarra Corretgé <saghul-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org>
>> wrote:
>>
>>>
>>> accept4 allows us to do this with a single syscall, and it made it into
>>> FreeBSD 10, so that's another system that could benefit from this
>>> optimization.
>>>
>>
>> If it doesn't, then perhaps the configure script needs to be fixed.
>>
>>
> Probably not, I'll have a look.
>
>
>  The idea is to accept an incoming connection and make it non-blocking at
>>> the same time, asyncio and other frameworks would benefit from this by
>>> doing one function call and 2 syscalls less (on supported systems, that
>>> is).
>>>
>>
>> That's not likely to do a significant difference (benchmarks welcome).
>>
>>
> Actually, after http://hg.python.org/cpython/rev/5f0d1aad7322/ it's 2
> function calls (accept + set_blocking)+ 2 syscalls (accept + ioctl FIONBIO)
> vs 1 function call (accept) + 1 syscall (accept4).
>
>
> --
> Saúl Ibarra Corretgé
> bettercallsaghul.com
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20140307/9ee8b132/attachment.html>


More information about the Python-ideas mailing list