關於 Python3 ThreadPoolExecutor 的隊列大小

【背景】

    截至 Python 3.6.6,concurrent.futures.ThreadPoolExecutor 中用的都是無·界隊列,在生產速度大於消費速度時,可能會耗光系統資源,希望找到一種方式避免這種情況。


【方案一】

  • 繼承 ThreadPoolExecutor,直接修改 _work_queue 爲有界隊列。

  • 優點:簡單粗暴直接。

  • 缺點:修改了私有屬性。

  • 示例:https://stackoverflow.com/a/48327162


【方案二】

  • 將任務分組,每組完成後再提交下一組。

  • 優點:無需繼承,不改變私有屬性;能切實有效的避免資源耗費。

  • 缺點:組之間的任務是同步的,未充分利用線程,即使有剩餘任務也有空閒線程存在。

  • 示例:https://stackoverflow.com/a/49622149


【方案三】


*** walker ***


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章