Python time sleep fonksiyonu hakkında

pythonda bulunan time modulunde bulunan sleep() fonksiyonunda kullnanılabilecek olan en küçük zaman dilimi nedir mesela
time.sleep(0.0001) kullanılabilirmi?

import time
from timeit import timeit

def sleeper(t):
    time.sleep(t)

for i in range(20):
    delay_time = timeit(f"sleeper(1e-{i})", globals=globals(), number=1)
    print(f"10e-{i} time: \t{delay_time:.20f} seconds")

bir yerden sonra çok anlamlı değil gibi

10e-0 time: 	1.00104702700014058792 seconds
10e-1 time: 	0.10014566999984708673 seconds
10e-2 time: 	0.01008845999990626296 seconds
10e-3 time: 	0.00108077800018691050 seconds
10e-4 time: 	0.00017192299992530025 seconds
10e-5 time: 	0.00006830100005572604 seconds
10e-6 time: 	0.00005943999985902337 seconds
10e-7 time: 	0.00005897699998058670 seconds
10e-8 time: 	0.00005846400017617270 seconds
10e-9 time: 	0.00005857899986949633 seconds
10e-10 time: 	0.00005839799996465445 seconds
10e-11 time: 	0.00005836299988004612 seconds
10e-12 time: 	0.00005825399989589641 seconds
10e-13 time: 	0.00005883400012862694 seconds
10e-14 time: 	0.00005834900002810173 seconds
10e-15 time: 	0.00005811100004393666 seconds
10e-16 time: 	0.00005813899997519911 seconds
10e-17 time: 	0.00005833199998050986 seconds
10e-18 time: 	0.00005809699996461859 seconds
10e-19 time: 	0.00005825700009154389 seconds

Fonksiyonun dokumentasyonunda detaylica anlatiliyor.

1 Beğeni

evet biliyorum ama diger forumlardada sleep fonksiyonunun makinanın zaman dilim ile cakısma yasadığı ve belli aralık dısında kullanıldıgında 5 milisaniye aralıgında sabitlendiği yazılmış. özelliklede v3.9 öncesinde sorun olduğu anlatılıyor. ayrıyettende mac linux ve nt arasındada farklılıklar olduğu anlatılıyor. bununla beraber linux consol, pycharm ve vscode ile kullanıldığındada farklı sonuclar verdiğine ben sahidim.

Evet. Bunlarin bir kismi da resmi dokumentasyonda yaziyor :slight_smile:

Konu zor bir konu, cunku sleep’in belirli bir kullanim alani yok. Cogu sistemin hardware konfigurasyonuna, calisma anindaki yukune vs. bagli olmakla beraber, cogu zaman en az, veya en fazla verilen zaman kadar uyuyanacaginin bir garantisi bile yok.

Islemleri bir kullanici karsisinda yavaslatmak icin, veya sıkı loop’lari gevsetmek icin milisaniyeler ile kullaniliyor. Daha fazla hassasiyet gerekiyorsa, yapilan isle ilgili bir zamanlama fonksiyonu kullanmakta fayda var.

Mesela framerate sabitlemek icin frametimer · PyPI var. Yuksek hassasiyetli uyuma icin de kullanilabilir. Degisik sistemlerde test etmedim. Eden olursa sonucunu bilmek isterim. (Ozellikle sorun cikarsa.)

2 Beğeni