Python 龙卷风伊洛普+;穿线

Python 龙卷风伊洛普+;穿线,python,http,tornado,web-frameworks,Python,Http,Tornado,Web Frameworks,我从一段时间以来一直在研究TornadoWeb框架,但我仍然不清楚ioloop的功能,尤其是如何在多线程中使用它。 是否可以为多个服务器创建单独的ioloop实例???绝大多数Tornado应用程序应该只有一个ioloop,在主线程中运行。您可以在同一IOLoop上运行多个httpserver(或其他服务器) 可以创建多个ioloop并为每个ioloop提供自己的线程,但这很少有用,因为GIL确保一次只运行一个线程。如果您确实使用多个IOLoop,则必须小心确保不同的线程仅通过线程安全方法(即I

我从一段时间以来一直在研究TornadoWeb框架,但我仍然不清楚ioloop的功能,尤其是如何在多线程中使用它。
是否可以为多个服务器创建单独的ioloop实例???

绝大多数Tornado应用程序应该只有一个ioloop,在主线程中运行。您可以在同一IOLoop上运行多个httpserver(或其他服务器)


可以创建多个ioloop并为每个ioloop提供自己的线程,但这很少有用,因为GIL确保一次只运行一个线程。如果您确实使用多个IOLoop,则必须小心确保不同的线程仅通过线程安全方法(即IOLoop.add_callback)进行通信。

谢谢Ben,请您提供有关IOLoop类及其方法的更多信息。我不能清楚地理解ioloop的instance()、current()、make_current()方法的用法。谢谢。通常,您应该使用current()来获取活动的IOLoop。instance()的存在主要是为了向后兼容(尽管有时在存在多个IOLoop时它很有用)。很少需要使用make_current();它主要用于创建和销毁许多IOLoop的测试。只是好奇,当
instance()
current()
有IOLoop时,如何实现“每个线程一个IOLoop”如果有IOLoop,不创建新的IOLoop?启动每个线程时,用IOLoop()创建一个新的IOLoop,它将成为当前的()。