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