[Python-Dev] Adding poll() system call
Sam Rushing
rushing@nightmare.com
Tue, 11 Jul 2000 13:26:53 -0700 (PDT)
Andrew Kuchling writes:
> (At the very highest end, even poll() begins to scale badly since you
> list "all the open fds", not "all the open fds which have activity".
> At that point you're supposed to switch to async I/O, but probably
> you'd have switched from Python to C long before that point.)
Lots of good info on these issues is available here:
http://www.kegel.com/c10k.html
Linux and FreeBSD are growing new kernel-event-delivery mechanisms that promise
better scalability and efficiency. Win32's had it from the beginning.
For the eGroups coroutine scheduler ( http://www.egroups.com/group/python-coro )
I wrote a more efficient poll wrapper, but it's also very bare. Might be a
starting point. This stuff hasn't been used yet, so the driver module has
fallen way behind. Compare coro2.py to 'coro.py' in the egroups coro dist.
http://www.nightmare.com/stuff/coro_poll.c
http://www.nightmare.com/stuff/coro2.py
In coro_poll.c, there's a single struct pollfd array, that should probably be
PyObject-ified.
-Sam