[英]How to load data from your S3 bucket to Sagemaker jupyter notebook to train the model?
[英]How do I increase speed of XML retrieval and parsing in S3 Jupyter Notebook (SageMaker Studio)?
我正在管理计算机视觉项目的数据,并且正在寻找一种快速的方法来搜索和操作给定目录中的所有文件。 我有一个可行的解决方案,但每秒只能处理 10-20 个文件。 我是 Jupyter Notebooks 的新手,所以我正在寻找有关提高附加代码效率的建议。
car_count=0
label_dict={}
purge_list=[]
for each_src in source_keys:
pages = paginator.paginate(Bucket=src_bucket, Prefix=each_src)
for page in pages:
for obj in page['Contents']:
fpath = obj['Key']
fname = fpath.split('/')[-1]
if fname == '':
continue
copy_source = {
'Bucket': src_bucket,
'Key': fpath
}
if fname.endswith('.xml'):
obj=s3.Object(src_bucket,fpath)
data=obj.get()['Body'].read()
root = ET.fromstring(data)
for box in root.findall('object'):
name=box.find('name').text
if name in label_dict:
label_dict[name] +=1
else :
label_dict[name] = 1
if name not in allowed_labels:
purge_list.append(fpath)
print(f'Labels: {label_dict}',end='\r')
print(f'\nTotal Images files:{i}, Total XML files:{j}',end='\r')
#print(f'\nLabels: {label_dict})
print(f'\nPURGE LIST: ({len(purge_list)} files)')
多线程- 我在正常 Python 3.x 中完成了线程处理 笔记本中的多线程是否很常见? 读取更少的文件- 当前读取整个文件,不确定这是否是一个大的停顿点,但可能会提高速度。
Jupyter 通常有很多开销——你的语法也有三个级别的for
循环。 在 python 的世界中, for
循环越少越好——而且, binary
数据几乎总是更快。 所以,一些建议:
bash
脚本redis
或其他快速数据结构来“读入”数据golang
相对容易从 python 跳转,也有很好的多线程支持 - 我的 2 美分:至少值得一试
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.