標籤:

Python:使用多線程並發執行任務,並接收有序的返回值

在使用多線程時,簡單的IO操作有時滿足不了我們的需求,我們需要有序的接收返回值,例如:調用第三方API

我這個栗子是調用TTS的在線合成API,先看一下結果吧:

左側:正常的順序執行,共進行了4次調用,最後的總時間為4次之和

右側:通過多線程並發執行,共進行了4次調用,整個執行時間大約為用時最長的一次的時間

先看一下要進行TTS的數據:

["我的公眾號是Python瘋子", "內容沒有花架子", "都是真實案例", "歡迎您的關注"]

順序執行

顧名思義就是很簡單的通過遍歷調用API,然後對返回的音頻數據進行拼接。

共進行了4次調用,返回每次調用API的耗時,以及最後的總時間發現總時間為每次調用之和,這個時間已經很漫長,滿足不了我的要求。

多線程並發

用多線程並發,可以很好的解決這個問題,但並發時的任務返回順序是無法預料的,於是這裡我用了sort進行序號話,這樣就能知道返回的是那一句的內容了。現將現在的列表改為列表包含字典式,並將內容進行排序

然後進行TTS的API請求處理,對返回數據時同樣進行添加對應的sort,對返回的數據再通過sort進行排序,這樣就得到了有序的返回內容

API請求處理返回值處理

因為是多線程並發執行,共進行了4次調用,幾乎是同時發起請求處理,整個執行時間大約為用時最長的一次的時間,遠遠高於順序執行這是多線程處理代碼

Git代碼: 公眾號後台回復 thread_tools


推薦閱讀:

Python開發的十個Tips,你知道幾個?

TAG:Python開發 |