Create clock pulse with python
04:22 25 Sep 2021

I want to work with exactly 20ms sleep time. When i was using time.sleep(0.02), i am facing many problems. It is not working what i want. If I had to give an example;

import time
i = 0
end = time.time() + 10
while time.time() < end:
    i += 1
    time.sleep(0.02)
    print(i)

We wait to see "500" in console. But it is like "320". It is a huge difference. Because sleep time is not working true and small deviations occur every sleep time. It is increasing cumulatively and we are seeing wrong result.

And then, i want to create my new project for clock pulse. Is it that possible with time.time()?

import time
first_time = time.time() * 100 #convert seconds to 10 * miliseconds
first_time = int(first_time) #convert integer

first_if = first_time
second_if = first_time + 2 #for sleep 20ms
third_if = first_time + 4 #for sleep 40ms
fourth_if = first_time + 6 #for sleep 60ms
fifth_if = first_time + 8 #for sleep 80ms

end = time.time() + 8
i = 0
while time.time() < end:
    now = time.time() * 100 #convert seconds to 10 * miliseconds
    now = int(now) #convert integer

    if i == 0 and (now == first_if or now > first_if):
        print('1_' + str(now))
        i = 1
    if i == 1 and (now == second_if or now > second_if):
        print('2_' + str(now))
        i = 2
    if  i == 2 and (now == third_if or now > third_if):
        print('3_' + str(now))
        i = 3
    if i == 3 and (now == fourth_if or now > fourth_if):
        print('4_' + str(now))
        i = 4
    if i == 4 and (now == fifth_if or now > fifth_if):
        print('5_' + str(now))
        break

Out >> 1_163255259009
       2_163255259011
       3_163255259013
       4_163255259015
       5_163255259017

Is this project true logic? And If it is true logic, how can finish this projects with true loops? Because i want these sleeps to happen all the time. Thank you in advice.

python time sleep pulse-signal