[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