eventlet 的 spawn_n 和 spawn 有什麼區別?

ponponon發表於2023-04-30

在 eventlet 中,spawn_n()spawn() 都是用於建立協程的函式,但是它們有一些區別。

spawn_n() 函式是非同步的,它會在當前協程的事件迴圈中非同步地建立一個新的協程。這意味著它會立即返回,並且不會等待新協程的執行。spawn_n() 的好處是它不會阻塞當前協程,因此可以在不影響其他協程的情況下建立新的協程。

spawn() 函式是同步的,它會立即建立一個新的協程並等待它完成。這意味著 spawn() 函式會阻塞當前協程,直到新協程執行完成。spawn() 的好處是,它會確保在新協程執行之前,當前協程已經暫停,並且在新協程執行完成之前,當前協程不會再次執行。

如果你只是想在事件迴圈中非同步地建立一個新協程,那麼可以使用 spawn_n() 函式。如果你想等待新協程完成並獲取它的返回值,則應該使用 spawn() 函式。

相關文章