My_Path我必須遍歷給定路徑( )(大約 60 000)處的大量文件夾。然后在每個文件夾中My_Path,我必須檢查文件名是否包含某個日期。我想知道是否有比使用os庫一個一個循環更快的方法。(約 1 小時)My_Path:- Folder 1 o File 1 o File 2 o File 3 o …- Folder 2- Folder 3- …- Folder 60 000import osMy_Path = r'\\...\...\...\...'mylist2 = os.listdir(path) # give a list of 60000 elementfor folder in mylist2: mylist = os.listdir(My_Path + folder) # give the list of all files in each folder for file in mylist: Check_Function(file)實際運行大約需要一個小時,我想知道是否有最佳解決方案。
2 回答

慕碼人8056858
TA貢獻1803條經驗 獲得超6個贊
嘗試os.walk(),可能會更快:
import os
My_Path = r'\\...\...\...\...'
for path, dirs, files in os.walk(My_Path):
for file in files:
Check_Function(os.path.join(path, file))
如果不是,也許是你Check_Function吃光了周期。

GCT1015
TA貢獻1827條經驗 獲得超4個贊
正如其他人已經建議的那樣,您可以在此答案lst中獲取所有文件的列表。然后你可以用多處理來旋轉你的函數。
import multiprocessing as mp
def parallelize(fun, vec, cores):
with mp.Pool(cores) as p:
res = p.map(fun, vec)
return res
并運行
res = parallelize(Check_Function, lst, mp.cpu_count()-1)
更新 鑒于我認為不受Check_Functioncpu 限制,您可以使用更多內核。
添加回答
舉報
0/150
提交
取消