Python:使用多線程並發執行任務,並接收有序的返回值
09-05
在使用多線程時,簡單的IO操作有時滿足不了我們的需求,我們需要有序的接收返回值,例如:調用第三方API
我這個栗子是調用TTS的在線合成API,先看一下結果吧:
左側:正常的順序執行,共進行了4次調用,最後的總時間為4次之和
右側:通過多線程並發執行,共進行了4次調用,整個執行時間大約為用時最長的一次的時間先看一下要進行TTS的數據:
["我的公眾號是Python瘋子", "內容沒有花架子", "都是真實案例", "歡迎您的關注"]
順序執行
顧名思義就是很簡單的通過遍歷調用API,然後對返回的音頻數據進行拼接。
共進行了4次調用,返回每次調用API的耗時,以及最後的總時間發現總時間為每次調用之和,這個時間已經很漫長,滿足不了我的要求。
多線程並發
用多線程並發,可以很好的解決這個問題,但並發時的任務返回順序是無法預料的,於是這裡我用了sort進行序號話,這樣就能知道返回的是那一句的內容了。現將現在的列表改為列表包含字典式,並將內容進行排序
然後進行TTS的API請求處理,對返回數據時同樣進行添加對應的sort,對返回的數據再通過sort進行排序,這樣就得到了有序的返回內容
API請求處理返回值處理
因為是多線程並發執行,共進行了4次調用,幾乎是同時發起請求處理,整個執行時間大約為用時最長的一次的時間,遠遠高於順序執行這是多線程處理代碼
Git代碼: 公眾號後台回復 thread_tools
推薦閱讀:
TAG:Python開發 |