Script muito lento? Alguma razão em particular?

0

Eu tenho um script que faz o hexdump junto com os comandos do pipeline e, finalmente, estou redirecionando-o para um arquivo. Agora estou registrando dados da porta serial do meu Raspberry Pi. Eu também chamo um script python (tempo de exibição em milissegundos) do script de shell. Eu levo 5 minutos para ver os dados na tela depois de executar o comando.

            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

Alguém pode me sugerir uma maneira de fazer esse script sem fazer o pipe. Eu acho que isso está causando o atraso. Aqui está o meu script Python

   import time
   millis = int(round(time.time() * 1000))
   print millis
    
por RajuBhai 28.04.2016 / 21:04

1 resposta

0

Você pode começar não instanciando o Python em cada byte correspondente (!):

#!/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 "."
}
    
por 04.05.2016 / 04:51