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

实际现象

  • 想弄清楚tornado的Epoll

预期现象

上下文环境

  • 产品版本: Tornado最新

  • 操作系统: Linux

  • Python 2.7.x

PHPz
PHPz

学习是最好的投资!

répondre à tous(1)
Peter_Zhu

Vous pouvez consulter le module tornado de ioloop. Il y a des instructions à l'intérieur

...
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`.
...

Utilisez Linux dans le système epoll, utilisez BSD dans Mac OS X ou kqueue et utilisez select dans d'autres systèmes.

utilise le module python dans la bibliothèque standard select. En fait, le module select n'est qu'un appel au select du système et n'est pas implémenté par lui-même.

Si vous souhaitez étudier en profondeur, vous pouvez consulter le code source


Merci @evian pour l'ajout. Le module
de la bibliothèque standard pythonselect est une encapsulation de diverses I/O solutions de réutilisation dans le système.

>>> 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']
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal