python協程是什麼?

如題

協程和線程的區別是什麼呢

協程在python中有哪些應用


你行你就上,不行旁邊等著讓別人上,啥時候行了你再上。

我對協程的定義是:協程是在一個線程執行過程中可以在一個子程序的預定或者隨機位置中斷,然後轉而執行別的子程序,在適當的時候再返回來接著執行。他本身是一種特殊的子程序或者稱作函數。

區別:樓上很好很精闢。

應用:協程基於generator,Python3中內置了非同步IO。遇到IO密集型的業務時,總是很費時間啦,多線程加上協程,你磁碟在那該讀讀該寫寫,我還能去干點別的。在WEB應用中效果尤為明顯。


協程就是一種用戶態內的上下文切換技術


不知道協程的常見應用場景有哪些,哪位大神舉些例子


所謂協程,就是同時開啟多個任務,但一次只順序執行一個。等到所執行的任務遭遇阻塞,就切換到下一個任務繼續執行,以期節省下阻塞所佔用的時間。

而多線程就是純粹的並發模型了,同時執行多個任務,系統每次處理多個任務遞交的請求之一,類似於邊吃飯邊喝水的意思。

單進程下協程和多線程區別並沒有很大,而多進程下,多線程可以利用多核資源,這是單進程的協程模型做不到的。


我們豈安科技的工程師曾經寫過一篇關於python協程的文章,談談Python協程技術的演進,可以去看看哦,希望能幫到你(●"?"●)


點鏈接自己看 http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868328689835ecd883d910145dfa8227b539725e5ed000


推薦閱讀:

為什麼會有函數式編程?
函數式編程能否解決所有經典的演算法問題?
想要理解函數式編程的思想,最好用哪種函數式編程語言入門?
Scheme語言中的「不可變數據」會產生性能問題嗎?
函數式編程如何優雅的處理很多 多個函數都要用到的 參數?

TAG:Python | 函數式編程 | 線程 | Python庫 | 協程 |