我写一个脚本如果我设置0之间的参数为1,这取一系列参数的命令行多芯和并行处理运行脚本
script.pl start end
for ($k1=$start; $k1<$end; $k1 += 0.001) {
for ($k2=$start; $k2<$end; $k2 += 0.01) {
for ($k3=$start; $k3<$end; $k3 += 0.001) {
for ($k4=$start; $k4<$end; $k4 += 0.001) {
for ($k5=$start; $k5<$end; $k5 += 0.001) {
...
}}}}}
,它需要很长的时间。最简单的方法是将它们分成更小的间隔,如
script.pl 0 0.01
script.pl 0.01 0.02
...
script.pl 0.9 1
然后我必须同时打开100个屏幕!
有人可以指导我如何自动做到这一点?
我不确定最好的办法是什么,因为这个原因我问。我有256个内核。
在同一台机器上一次打开100个屏幕,并在其上运行100个不同的脚本不会并行任何操作。如果你的机器有2个内核,操作系统可能会分配核心1上的前50个脚本和核心2上的下50个脚本 – arunmoezhi 2014-09-30 19:55:46
你究竟在做什么?这看起来像一大堆嵌套的迭代......但是这没有任何作用。无论如何,perl支持线程和分叉来执行并行代码。最适合的问题是你想要完成什么的问题。 – Sobrique 2014-09-30 19:57:44
你尝试过什么吗?您是否查看过在核心之间分配工作的perl方法?鉴于你如何分割它们的例子,解决方案不是向你展示吗?是否提醒您可以使用'&'help在shell的后台运行脚本? – 2014-09-30 19:57:49