什麼操作用協程比較好?

比如爬蟲、解析網頁和寫入資料庫,都能用協程嗎?


為啥會有人邀請我回答←_←
首先協程算是用戶態的線程,優勢主要是少了內核態用戶態的切換和能自己來做調度。
然後協程一般只在有IO操作的時候才能用到,對於一些會阻塞的IO操作,可以自己選擇協程切換,等IO就緒了再切回來,可以更充分利用CPU。
就像你在做菜,切了蘿蔔去煲湯,另外還要煮雞蛋:
1.線程的話,就是你切蘿蔔到一半就換成煮雞蛋,然後一會換回來繼續切蘿蔔(線程什麼時候切換是操作系統決定的)
2.協程的話,就是你切完蘿蔔開始煲湯,然後自己換出去切煮雞蛋(因為煲湯不用一直卡在那裡嘛)

應用到實際你的例子,就是爬蟲做網路請求的時候可以切出去,資料庫也一樣。
如果單純是運算沒有IO,那麼協程就沒什麼優勢了


我用協程純粹是因為符合思維習慣。


可以,非同步IO模型使用協程代替進程達到減少進程創建和切換的開銷。Python3中內置了asyncio庫。詳細可以看以下官方手冊。
18.5. asyncio - Asynchronous I/O, event loop, coroutines and tasks - Python 3.6.0 documentation


io比較多的操作


推薦閱讀:

用 python 寫的爬蟲,有哪些提高的技能?
學校圖書館購買的資料庫是什麼?
(文獻搜索大神進)跪求!!求外國免費的資料庫鏈接。能找到英文圖書和英語期刊論文,能全文查看論文的那種?
約 1億條記錄, 每條1k左右,key =>value形式,用於前台查詢,選擇什麼作為存儲方案比較合適呢,要求效率比較高並且相對穩定可靠?
資料庫的選擇?

TAG:資料庫 | 爬蟲計算機網路 | 協程 |