macmon 0.6.1

Sudoless performance monitoring CLI tool for Apple Silicon processors
import multiprocessing
import time


def loop(order: int):
    time.sleep(1 - (time.time() * 1e6 % 1e6) / 1e6)

    gap = 1
    while True:
        stime = time.time()
        while time.time() - stime < gap:
            pass

        time.sleep(gap - (time.time() * 1e6 % 1e6) / 1e6)

    steps = 1
    gap = 1 / steps
    time.sleep(order * gap)
    while True:
        ranges = [i for i in range(steps)] + [i for i in range(steps - 2, 0, -1)]
        ranges = [i for i in range(steps)]
        for i in ranges:
            until_time = i * gap
            after_time = (steps - i - 1) * gap

            time.sleep(until_time)
            stime = time.time()
            while time.time() - stime < gap:
                pass

            time.sleep(after_time + 0.01)


def main():
    # dt = 1 - (time.time() * 1e6 % 1e6) / 1e6
    # time.sleep(dt)
    # print(dt, time.time())
    # return

    threads = []
    for i in range(4):
        t = multiprocessing.Process(target=loop, args=(i,))
        t.start()
        threads.append(t)

    for thread in threads:
        thread.join()


if __name__ == "__main__":
    main()