问题描述
如题,在需要读取大量小文件时,靠后的文件总是打开的比靠前的慢很多,已经更换了速度更快的sd卡了(目前使用64G卡),打开时能快一点但明显还是会越来越慢,请问这个要怎样解决呢?
目前我是在电脑上先将所有小文件合并为单个文件,然后在k230上一次打开,这样速度就没有明显问题。
复现步骤
首先在电脑上创建测试用的小文件
import os
base_dir = "D:/test"
os.makedirs(base_dir, exist_ok=True)
for i in range(3000):
with open("{}/{}.txt".format(base_dir, i), "w") as file:
for j in range(700):
file.write("A")
然后将test文件夹复制到K230存储卡的SDCARD分区
最后将存储卡插回K230,在IDE里运行下面的脚本,可以看到打印数字的速度越来越慢
import os
base_dir = "/sdcard/test"
def get_file_list(dir_path: str):
filelist_str = []
try:
filelist_byte = os.listdir(dir_path.encode("utf-8"))
for filename in filelist_byte:
try:
filelist_str.append(filename.decode("utf-8"))
except:
print("file name decode err " + str(filename))
except Exception as e:
print("get file list err " + str(e))
return []
return filelist_str
filelist = get_file_list(base_dir)
for i in range(len(filelist)):
# for i n range(int(len(filelist) / 2), len(filelist)):
with open("{}/{}".format(base_dir, filelist[i]), "r") as file:
# print(i, len(file.readlines()[0]))
print(i)
另外如果从文件列表的中间开始打开文件,打开的速度并不会和从头开始一样快,貌似是靠后的文件打开一定会变慢。
硬件板卡
亚博智能K230
软件版本
CanMV_K230_YAHBOOM_micropython_v1.5-legacy-1-g7843f7c_nncase_v2.9.0
你好,我们会来review一下存储这部分的驱动。