語法:
- 用@asyncio.coroutine 裝飾方法
- 用asyncio.sleep()做等待
- 以asyncio.CancelledError來獲取.cancel事件
- 用yield from來等待異步任務
- 用asyncio.async排定協(xié)程外臂,立即返回task對象不狮。
- 用asyncio.get_event_loop().run_until_complete(xx())來等待處理完成。
線程與協(xié)程對比
- Task與Future類似
- Task用于驅動協(xié)程讳嘱,Thread用于調用callable對象
- Task不由自己手動實例化闯袒,而是傳給asyncio.async(..)或loop.create_task(..)獲取
- Task排定了運行時間虎敦,Thread需要調用start方法明確運行
- 線程不可通過外部的API終止游岳,協(xié)程可以通過yield捕獲到終止異常
- 線程需要加鎖,防止數(shù)據(jù)處于無效狀態(tài)其徙。協(xié)程無需保留鎖吭历,自身會同步協(xié)作