脚本太慢?有什么特别的原因吗?

脚本太慢?有什么特别的原因吗?

我有一个脚本,它与管道命令一起执行十六进制转储,最后我将其重定向到一个文件。现在我正在记录来自 Raspberry Pi 串行端口的数据。我还从 shell 脚本调用 python 脚本(以毫秒为单位显示时间)。运行命令后,我需要大约 5 分钟才能在屏幕上看到数据。

            timeout 2s ./ExpHmax
            while :
            do
            sudo hexdump -v -e '1/1 "%02x\n"' /dev/ttyUSB0 | awk '$1=="ed" {
            getline byte1
            getline byte2
            number = strtonum("0x" substr(byte2,2,1))+2
            "./Time.py" |& getline timestamp;
            data = ":: "timestamp " ::ED." byte1"."byte2
            while(number-->0)
            {getline byte; data = data"."byte}
            print data"."
            }' |  tr '[a-z]' '[A-Z]'| grep -v '^.....................00' >      Thur.log
            done

任何人都可以建议我一种无需执行管道即可执行此脚本的方法。我猜这就是造成延误的原因。这是我的 Python 脚本

   import time
   millis = int(round(time.time() * 1000))
   print millis

答案1

您可以首先不在每个匹配的字节上实例化 Python(!):

#!/usr/bin/awk -f
function de() {
  getline < "/proc/uptime"
  close("/proc/uptime")
  return $0
}
BEGIN {
  ec = de()
}
$0 == "ed" {
  getline byte1
  getline byte2
  number = strtonum("0x" substr(byte2, 2, 1)) + 2
  data = ":: " de() - ec " ::ED." byte1 "." byte2
  while (number--) {
    getline byte
    data = data "." byte
  }
  print data "."
}

相关内容