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():
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()