python多進程apply與apply_async的區別


為什么會這樣呢?

因為進程的切換是操作系統來控制的,搶占式的切換模式。
我們首先運行的是主進程,cpu運行很快啊,這短短的幾行代碼,完全沒有給操作系統進程切換的機會,主進程就運行完畢了,整個程序結束。子進程完全沒有機會切換到程序就已經結束了。

apply是阻塞式的。

首先主進程開始運行,碰到子進程,操作系統切換到子進程,等待子進程運行結束后,在切換到另外一個子進程,直到所有子進程運行完畢。然后在切換到主進程,運行剩余的部分。

apply_async是異步非阻塞式的。

首先主進程開始運行,碰到子進程后,主進程說:讓我先運行個夠,等到操作系統進行進程切換的時候,在交給子進程運行。以為我們的程序太短,然而還沒等到操作系統進行進程切換,主進程就運行完畢了。

想要子進程執行,就告訴主進程:你等着所有子進程執行完畢后,在運行剩余部分。

注意:close必須在join前調用。

作者:有點d傷
鏈接:https://www.jianshu.com/p/0a55507f9d9e
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM