在异步编程中,不同 Task
(asyncio.Task
) 之间使用 Future
(asyncio.Future) 进行数据交互。
这样子的设计是没有问题的,在实际的运行环境中,发现某些请求一直会延迟 1 秒执行。
经过大量的测试调试后,发现 asyncio.Future
, 在 set_result
和 await fut
过程中花费了将近 1 秒的时间。
经阅读文档发现需要用 loop.create_future
来提高性能,于是更改为这方案。经测试这种方式在数据交互过程中需要 200 毫秒的时间。
200 毫秒,对于一个网络请求来讲太久了。在加上我们搞物联网,加上设备网络的延迟,那就很久了。
如果不用 asyncio.Future
, 直接用 callback
的模式, 这样自己就没有延迟。最后我们使用的这种方案, 请求时间马上从 1 秒多,降到 100 多毫秒。
网友评论