分析 Tornado/Asyncio 时哪些功能是免费的?
Which functions are free when profiling Tornado/Asyncio?
我正在 运行 构建一个相当复杂的 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'[=11=]')
和
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% 的计算时间,无论是在活动时还是在安静时。我应该关心它们,还是这些只是系统等待某事发生时的等待状态?
我正在 运行 构建一个相当复杂的 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'[=11=]')
和
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% 的计算时间,无论是在活动时还是在安静时。我应该关心它们,还是这些只是系统等待某事发生时的等待状态?