天天看點

tornado中IOLoop.instance()和IOLoop.current()的差別

我使用的是tornado的4.4.2版本,檢視源代碼發現這兩個的差別:

IOLoop.instance():

傳回一個全局的IOLoop執行個體。大多數的應用程式都是在主線程上運作一個單一的IOLoop,使用instance()從另一個線程擷取該執行個體,大多數情況下,最好使用current() 來擷取目前線程的IOLoop。

tornado中IOLoop.instance()和IOLoop.current()的差別

 IOLoop.current() :

傳回目前線程的IOLoop。如果IOLoop目前正在運作或被标記為通過make_current 傳回該執行個體。如果目前沒有IOLoop,則傳回IOLoop.instance()(即主線程的IOLoop),如果沒有,則需要建立一個執行個體。

一般來說,當你構造一個異步對象時,應該使用 IOLoop.current() 作為預設值,如果你在另外一個線程上和主線程進行通信,則使用IOLoop.instance()。

tornado中IOLoop.instance()和IOLoop.current()的差別