【背景】html
截至 Python 3.6.6,concurrent.futures.ThreadPoolExecutor 中用的都是無·界隊列,在生產速度大於消費速度時,可能會耗光系統資源,但願找到一種方式避免這種狀況。python
【方案一】併發
繼承 ThreadPoolExecutor,直接修改 _work_queue 爲有界隊列。ide
優勢:簡單粗暴直接。工具
缺點:修改了私有屬性。線程
【方案二】code
將任務分組,每組完成後再提交下一組。htm
優勢:無需繼承,不改變私有屬性;能切實有效的避免資源耗費。blog
缺點:組之間的任務是同步的,未充分利用線程,即便有剩餘任務也有空閒線程存在。
【方案三】
建立工具類委託給 ThreadPoolExecutor 實例。
優勢:無需繼承,不改變私有屬性;充分利用了線程,有剩餘任務時不會有空閒線程存在。
缺點:實現較爲複雜。
示例:https://www.bettercodebytes.com/theadpoolexecutor-with-a-bounded-queue-in-python/
【相關閱讀】
*** walker ***