作者:
skyHuan (Huan)
2018-10-11 13:37:22最近在練習多執行緒的實作qsort
輸入的資料量不大的時候可以順利完成
但當資料量很大的時候thread會太多跑不動
我在找怎麼限制thread數量的方法時
有查到一個ThreadPoolExecutor可以限制max_workers
如以下程式碼前三行註解掉的地方
但我在pool.submit的時候
不確定要在建立thread的時候做
還是在thread .start()的時候做
其實也不確定這個方法是不是可行的
用threading.active_count()看好像thread數量還是不斷爆增
想請問該如何正確使用
或是有沒有其他更好的方法
感謝各位前輩解答
import threading
#from concurrent.futures import ThreadPoolExecutor
#pool = ThreadPoolExecutor(max_workers = 2)
def QuickSort(A, p, r):
if p < r:
q = Partition(A, p, r)
#QuickSort(A, p, q-1)
t1 = threading.Thread(target = QuickSort, args = (A, p, q-1))
#QuickSort(A, q+1, r)
t2 = threading.Thread(target = QuickSort, args = (A, q+1, r))
t1.start()
t2.start()
#print(threading.active_count())
t1.join()
t2.join()
if __name__ == '__main__':
...
QuickSort(L, 0, len(L)-1)