0x01 多線程不生效
使用ThreadPoolExecutor線程池,並使用submit提交調用函數
開始調用寫法
from concurrent.futures import ThreadPoolExecutor
from concurrent import futures
pool = ThreadPoolExecutor(20)
result = pool.submit(test, arg1).result
簡單說下兩句的用法,第一句是設置線程池最大線程數爲20,第二句是多線程調用函數test,並且test函數有個參數是arg1,.result是獲取函數調用以後得返回結果,這樣調用的一個問題是提交以後會等到有結果以後纔會重新創建一個線程
正確的用法
from concurrent.futures import ThreadPoolExecutor
from concurrent import futures
pool = ThreadPoolExecutor(20)
task = pool.submit(test, arg1)
tread.append(task)
for t in futures.as_completed(tread):
try:
result = t.result()
except Exception as e:
print("線程執行錯誤:{}".format(e))
使用as_completed()函數判斷線程是否執行完成,然後再獲取result