Python Tornado I/O Loop current() 与 instance() 方法

Python Tornado I/O Loop current() vs instance() method

我一直在翻阅 tornado 文档。

在阅读IOLoop时,有如下内容。

In general you should use IOLoop.current as the default when constructing an asynchronous object, and use IOLoop.instance when you mean to communicate to the main thread from a different one.

我必须使用 instance() 方法通过共享一个全局 IOLoop 实例的多线程进行通信是有道理的。

但是这里的 asynchronous object 是什么以及为什么在 asynchronous object?

的情况下我应该使用 current()

"Asynchronous object" 仅表示像 IOStreamHTTPServer 这样具有异步方法的对象。

你应该几乎总是使用IOLoop.current()而不是IOLoop.instance()。在大多数情况下它们是等价的,因为你只有一个线程和一个 IOLoop,但是当它们不同时 current() 通常是你想要的。应该使用 IOLoop.instance() 的唯一时间是 A) 你有多个线程和 B) IOLoop 线程以外的线程需要调用 add_callback (这是另一个线程可以与之交互的唯一方式IOLoop)。