машинописная / угловая задержка продолжения цикла каждые X секунд и каждый элемент X

Для Linux и обратной совместимости с Python (не у всех есть cpuinfo), вы можете проанализировать через /proc/cpuinfo напрямую. Чтобы получить скорость процессора, попробуйте:

# Take any float trailing "MHz", some whitespace, and a colon.
speeds = re.search("MHz\s*: (\d+\.?\d*)", cpuinfo_content)

Обратите внимание на необходимое использование \s для пробелов ... /proc/cpuinfo на самом деле имеет символы табуляции, и я работал в течение нескольких часов с sed до тех пор, пока я придумал:

sed -rn 's/cpu MHz[ \t]*: ([0-9]+\.?[0-9]*)/\1/gp' /proc/cpuinfo

Мне не хватало \t, и это сбило меня с ума, потому что я либо сопоставил весь файл, либо ничего.

Попробуйте аналогичные регулярные выражения для других полей вам нужно:

# Take any string after the specified field name and colon.
re.search("field name\s*: (.+)", cpuinfo_content)  
0
задан Skytech 28 February 2019 в 22:59
поделиться

3 ответа

Если вы хотите ждать только каждые 5 записей, я бы предложил использовать оператор модуля (%) , чтобы проверить, можно ли делить индекс на 5. Если он делится равномерно, то значение i % 5 будет равно нулю.

private drawTracing(tracingArray: Tracing[]) {

  for (let i=0; i < length; i++) {
     if(i % 5 = 0){
        setTimeout(()=> console.log('waiting'), 2000);
     }
       this.creatTracing(tracingArray[i]);
  }

}
0
ответ дан Adam Specker 28 February 2019 в 22:59
поделиться

Попробуйте добавить функцию wait() с задержкой в ​​2 секунды.

private drawTracing(tracingArray: Tracing[]) {

    for (let i=0; i < length; i++) {
          //2 Sec delay
          if (i===5) {
            wait(2000)
          }
         this.creatTracing(tracingArray[i]);
    }

}

. Или вы можете использовать setTimeOut

private drawTracing(tracingArray: Tracing[]) {

    for (let i=0; i < length; i++) {
          //2 Sec delay 
         if (i === 5) {
           setTimeout(() => { console.log('2 sec delay'); }, 2000)
         }

         this.creatTracing(tracingArray[i]);
    }

}




.
0
ответ дан Anand Ghaywankar 28 February 2019 в 22:59
поделиться

Используйте силу rxjs.

import { of, from } from 'rxjs'; 
import { delay, concatMap, mergeMap } from 'rxjs/operators';

const source = of(tracingArray).pipe(
  mergeMap((x: [Tracing]) => from(x)),
  concatMap(x => of(x).pipe(delay(2000)))
);

source.subscribe(x => console.log(x));

(правка: образец с массивами) По сути, все, что вам нужно сделать, это разделить tracingArray на куски (несколько подмассивов), которые затем будут отображаться каждые 2 с.

0
ответ дан avramz 28 February 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: