本文介绍Parallelize的用法,并行运行,可以在一定程度上增加CPU的利用率,进而提高运算速度。
工具/原料
1
电脑
2
Mathematica
方法/步骤
1
采用求出正整数的素因子的个数作为例子:f[n_] := Length[FactorInteger[n]]这个自定义函数,用来计算n的素因子个数。
2
计算10^n-1的素因子个数,其中n从50到70,如果一个一个的算,需要耗时7.9秒左右。AbsoluteTiming[f[10^# - 1] & /@ Range[50, 70]]
3
或者查看每一个数字所占用的时间:a = Map[AbsoluteTiming[f[10^# - 1]] &, Range[50, 70]]可以发现,耗时最多的一个数字是10^69-1。
4
如果采用并行运算,那么上面的过程,针对每一个数字的运算,可以同时进行:b = Parallelize[Map[AbsoluteTiming[f[10^# - 1]] &, Range[50, 70]]]这个时候,运算时间就是所有进程耗时的最大值。
5
再换一组数字:a = Map[AbsoluteTiming[f[#]] &, Range[6^20, 6^20 + 100]];b = Parallelize[Map[AbsoluteTiming[f[#]] &, Range[6^20, 6^20 + 100]]];如果你的CPU可以让这101个进程同时运行,那么a的耗时将是b的6倍左右。
6
如果1001个数字的运算进程可以同时运行,那么a的耗时是b的17倍。
注意事项
如果进程过多,Mathematica会自动分批次的并行运算。
上一篇:韵头韵腹韵尾怎么区分
下一篇:史上最全的泊车技巧图解