#!/usr/bin/env python import subprocess, multiprocessing as mp, warnings, pandas as pd from tabulate import tabulate warnings.filterwarnings("ignore") R, G, B, W = (f'\x1b[{x}m' for x in (31, 32, 34, 0)) subprocess.run('neofetch') def speed(core): output = subprocess.run( f'sysbench cpu --threads={core} run | grep "events per second"', shell=True, capture_output=True, text=True).stdout.split()[-1] return float(output) df = [] for core in range(1, mp.cpu_count()+2): s = speed(core) row = { '#Threads': core, 'Throughput': s, '(per-core)': s/core } df.append(row) df = pd.DataFrame(df) df.to_csv('bench.csv', index=False) df.iloc[:, 0] = df.iloc[:, 0].apply(lambda s: f'{R}{s}{W}') df.iloc[:, 1] = df.iloc[:, 1].apply(lambda s: f'{G}{int(s)}{W}') df.iloc[:, 2] = df.iloc[:, 2].apply(lambda s: f'{B}{int(s)}{W}') print(tabulate(df, headers='keys', tablefmt='rounded_outline', showindex=False))