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
提交
取消