Для 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)
Если вы хотите ждать только каждые 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]);
}
}
Попробуйте добавить функцию 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]);
}
}
. Используйте силу 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 с.