Python tornado, 在Linux下, 是实现了Epoll模型, 还是会使用Linux的Epoll ?
PHPz
PHPz 2017-04-18 10:23:12
0
1
826

实际现象

  • 想弄清楚tornado的Epoll

预期现象

上下文环境

  • 产品版本: Tornado最新

  • 操作系统: Linux

  • Python 2.7.x

PHPz
PHPz

学习是最好的投资!

membalas semua(1)
Peter_Zhu

Anda boleh menyemak modul tornado ioloop. Terdapat arahan di dalam

...
class IOLoop(Configurable):
    """A level-triggered I/O loop.
    We use `epoll` (Linux) or `kqueue` (BSD and Mac OS X) if they
    are available, or else we fall back on select(). If you are
    implementing a system that needs to handle thousands of
    simultaneous connections, you should use a system that supports
    either `epoll` or `kqueue`.
...

Gunakan Linux dalam sistem epoll, gunakan BSD dalam Mac OS X atau kqueue dan gunakan select dalam sistem lain.

menggunakan modul python dalam pustaka standard select. Sebenarnya, modul select hanyalah panggilan ke select sistem dan tidak dilaksanakan dengan sendirinya.

Kalau nak kaji secara mendalam, boleh tengok source code


Terima kasih @evian atas penambahan itu. Modul
dalam pustaka standard pythonselect ialah enkapsulasi pelbagai I/O penyelesaian guna semula dalam sistem.

>>> import platform
>>> platform.linux_distribution()
('Red Hat Enterprise Linux Server', '6.5', 'Santiago')
>>> import select
>>> dir(select)
['EPOLLERR', 'EPOLLET', 'EPOLLHUP', 'EPOLLIN', 'EPOLLMSG', 'EPOLLONESHOT', 'EPOLLOUT',         
'EPOLLPRI', 'EPOLLRDBAND', 'EPOLLRDNORM', 'EPOLLWRBAND', 'EPOLLWRNORM', 'PIPE_BUF', 
'POLLERR', 'POLLHUP', 'POLLIN', 'POLLMSG', 'POLLNVAL', 'POLLOUT', 'POLLPRI', 'POLLRDBAND', 
'POLLRDNORM', 'POLLWRBAND', 'POLLWRNORM', '__doc__', '__file__', '__name__', 
'__package__', 'epoll', 'error', 'poll', 'select']
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan