gpt4 book ai didi

Expect脚本的性能瓶颈

转载 作者:行者123 更新时间:2023-12-02 15:49:50 24 4
gpt4 key购买 nike

我正在尝试找出脚本中导致整个过程变慢的点。我正在使用 Expect 脚本发送 sed 命令来搜索和替换文件中的行。这需要 2 秒到 20 秒才能完成,而持续时间不应超过一秒。我是两个终端中并行的两个期望脚本。第一个文件 launchmpj.exp 启动一个 qsub 作业,需要几秒钟才能启动。第二个文件 launchneuron.exp 等待 qsub 作业启动并继续执行脚本。当 qsub 作业启动时,launchmpj.exp 发送一条命令,允许第二个文件 launchneuron.exp 了解 qsub 作业已启动并停止等待。

这里是launchmpj.exp

#!/usr/bin/expect -f
set timeout -1
spawn ssh $::env(username)@server
expect "$ "
send "qsub -I -q berger -A lc_tb -l nodes=\$nbnodes -l walltime=24:00:00 -d .\r"
expect "$ "
send "cp \$PBS_NODEFILE node`sed -n '1p' nodequeue`\r"
expect "$ "
send "sed -i '/wait=on/ s//wait=off/' `sed -n '1p' qsubwaitqueue`\r"
expect "$ "
send "cd $::env(MPJ_HOME)/bin\r"
expect "$ "
send "sh $::env(MPJLAUNCH)\r"
expect "Process 6 ended"

这是第二个文件launchneuron.exp

#!/usr/bin/expect -f
set timeout -1
spawn ssh $::env(username)@server
expect "$ "
send "set qsubwait = qsub`sed -n '\$p' queue`.sh\r"
expect "$ "
send "sh \$qsubwait\r"
expect "$ "
send "set nodefile = node`sed -n '1p' nodequeue`\r"
expect "$ "
send "ssh `sed -n '2'p \$nodefile`\r"
expect "$ "
send "cd $::env(NEURON_HOME)\r"
expect "$ "
send "nrniv -python $::env(NEURONPY)\r"
expect "$ "

作为该过程的一部分,我正在对下面的文件运行 sed 替换。单独 sed 的执行速度非常快,这意味着它不是上述脚本中的瓶颈。然而,当从expect脚本完成时,就会花费很长时间。

sed -i '/wait=on/ s//wait=off/' qsubwait.sh

文件qsubwait.sh:

wait=on
echo "Waiting for qsub to start."
while [ $wait = on ]; do
eval `sed -n '1'p qsubwait.sh`
echo `sed -n '1'p qsubwait.sh`
done

最佳答案

您是否达到了预期的超时值?使用 exp_internal 1 运行您的 Expect 脚本以查看 Expect 正在等待什么。

关于Expect脚本的性能瓶颈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17892393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com