cari

Rumah  >  Soal Jawab  >  teks badan

Python tornado, 在Linux下, 是实现了Epoll模型, 还是会使用Linux的Epoll ?

实际现象

预期现象

上下文环境

PHPzPHPz2863 hari yang lalu824

membalas semua(1)saya akan balas

  • 天蓬老师

    天蓬老师2017-04-18 10:25:12

    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']
    

    balas
    0
  • Batalbalas