我正在尝试理解eventlet.tpool的用途。文档称,tpool.execute()可以让你将阻塞函数放在新线程中运行。然而,tpool.execute()方法本身会阻塞直到线程完成!那么这有什么用呢?如果我有一些阻塞/长时间运行的函数myfunc()并直接调用它,它会阻塞。如果我在tpool.execute(myfunc)中调用它,那么tpool.execute(myfunc)调用也会阻塞。这两者有什么区别呢?
我唯一能猜测的是,当直接调用myfunc()时,它不仅会阻塞该协程,还会阻止其他协程运行,而调用tpool.execute()将阻塞当前协程但以某种方式进行了yield,以便其他协程可以运行。是这样吗?否则我不知道tpool有什么用处。
我唯一能猜测的是,当直接调用myfunc()时,它不仅会阻塞该协程,还会阻止其他协程运行,而调用tpool.execute()将阻塞当前协程但以某种方式进行了yield,以便其他协程可以运行。是这样吗?否则我不知道tpool有什么用处。