[Python-ideas] The async API of the future

Sturla Molden sturla at molden.no
Sat Nov 3 00:50:15 CET 2012

Sendt fra min iPad

Den 3. nov. 2012 kl. 00:30 skrev Antoine Pitrou <solipsis at pitrou.net>:

> On Sat, 3 Nov 2012 00:21:43 +0100
> Sturla Molden <sturla at molden.no> wrote:
>> Den 2. nov. 2012 kl. 23:14 skrev Antoine Pitrou <solipsis at pitrou.net>:
>>> On Fri, 2 Nov 2012 22:29:09 +0100
>>> Sturla Molden <sturla at molden.no> wrote:
>>>> IOCP might be the easiest way to get high performance on Windows, but certainly not the only.
>>>> IOCP is a simple user-space wrapper for a thread-pool and overlapped (i.e. asynchronous) i/o. There is nothing IOCP can do that cannot be done with a pool of threads and non-blocking read or write operations.
>>>> Windows certainly has a function to select among multiple wait objects, called WaitForMultipleObjects. If open files are associated with event objects signalling "ready-to-read" or "ready-to-write", that is the basic machinery of an Unix select() function.
>>> Hmm, but the basic problem with WaitForMultipleObjects is that it has a
>>> hard limit of 64 objects you can wait on.
>> Or a simpler solution than nesting them into a tree: Let the calls to WaitForMultipleObjects time out at once, and loop over as many events as you need, polling 64 event objects simultaneously.
> Well, that's basically O(number of objects), isn't it?

Yes, but nesting would be O(log64 n).

More information about the Python-ideas mailing list