【发布时间】:2018-07-29 16:38:36
【问题描述】:
我正在运行一个相当复杂的 Tornado TCP 服务器应用程序,我想了解什么需要时间,以便提高性能。我使用的是 Tornado v5+,所以 Tornado 由 asyncio 支持。
我在我的事件循环线程上运行了一个统计分析器,发现下面这样的堆栈很常见:
tornado/ioloop.py::run_sync
asyncio/asyncio.py::start
asyncio/base_events.py::run_forever
asyncio/base_events.py::_run_once
asyncio/events.py::_run
torando/ioloop.py::<lambda>
torando/platform/asyncio.py::add_callback
asyncio/base_events.py::call_soon_threadsafe
asyncio/selector_events.py::_write_to_self
csock.send(b'\0')
和
tornado/ioloop.py::run_sync
asyncio/asyncio.py::start
asyncio/base_events.py::run_forever
asyncio/base_events.py::_run_once
asyncio/events.py::selector_events.py::_read_from_self
data = self._ssock_recv(4096)
这些在活动和安静时都占用了大约 40% 的计算时间。我应该关心它们,还是这些只是系统等待某事发生时的等待状态?
【问题讨论】:
标签: python tornado python-asyncio