スクリプトが遅すぎますか?特別な理由がありますか?

スクリプトが遅すぎますか?特別な理由がありますか?

pipeコマンドを使用して16進ダンプを実行し、最後にそれをファイルにリダイレクトするスクリプトがあります。今、私はRaspberry Piシリアルポートからデータを記録しています。また、シェルスクリプトから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 "."
}

関連情報