并行处理readtable函数
10视图(30天)
显示旧的评论
ps = parallel.Settings;
ps.Pool。AutoCreate = false;%不autocreate parpool当遇到| parfor |
ps.Pool。IdleTimeout =正;%不关闭后parpool正空闲时间
parforj = 1:10
tCOD {j:} = readtable (full_file_name (j:)“文件类型”,“文本”,…
“headerlines”end_of_header_line (j),“readvariablenames”,0);
tCOD {j:} = [];
结束
当使用10大小约100 mb的文件,只有几秒的差异和parfor之间观察到的。有毛病parfor上面的步骤。有没有更方便的并行处理方法,可以应用?
如果多个“full_file_name (j:)”可以同时读取(使用多个核心),而不是按顺序,readtable可以显著增加的速度。
0评论
接受的答案
Edric埃利斯
2021年8月19日
你手动禁用
AutoCreate
平行池——我猜你手动创建与另一个池
parpool
声明。
是否
parfor
可以比一个串行更快
为
循环取决于你对这种情况下的底层硬件。它可能仅仅是限制因素是你的磁盘驱动器,并多次试图读取它同时不允许任何加速。
你可以尝试手动运行的多个副本MATLAB和调用
readtable
从每个人同时看看他们慢下来当争夺磁盘访问。即在MATLAB的多个副本运行这样的:
而真正的
t =抽搐();
readtable (args . .);
toc (t)
结束
我猜想,你会发现当你开始更多的MATLAB的副本,
toc
时间将会增加。