Tabi, kalan süre denklemini oluşturabilirseniz neden olmasın. İpucu olması açısından şöyle göstereyim:
import time
# İşlemi ölçmeye t zamanında başlayacak olalım.
t = time.perf_counter()
# İşlem boyutunu s ile ifade edelim.
s = 100000
# İşlem adımları için c isimli bir değişken oluşturalım.
c = 0
Bu üç parametreye göre bir denklem yazmalısınız.
Adım adım gidelim.
Tahmini gerçekleşme süresini hesaplamak için bizim önce işlemin gerçekleşme hızını hesaplamamız lazım. Lise fizik derslerinden hatırladığımız kadarıyla, hız formülü şöyleydi:
hız = mesafe / zaman
Bizim bu örnekteki mesafe kavramı yerine koyabileceğimiz kavram c
değişkeni, çünkü bu değer bizim hangi adımda olduğumuzu belirliyor; veya işlem boyutunu ifade eden s
. Zamanı nasıl hesaplarız? Şimdiki zamandan t
'yi çıkartarak. O halde işlem hızını şöyle hesaplayabiliriz:
islem_hizi = c / (time.perf_counter() - t)
Peki islem_hizi
'ni bulduk. Şimdi elimizde s
var islem_hizi
var, s
'in toplamda ne kadar süreye ihtiyacı olduğunu şöyle hesaplayabiliriz değil mi? (x = v.t formülünü hatırlayın)
toplam_zaman = s / islem_hizi
Toplamda bu işlemin süresi toplam_zaman
'ın değeri kadarmış. Peki biz kalan süreyi nasıl hesaplarız?
Toplam zamandan, geçen zamanı çıkartarak, yani:
kalan_zaman = toplam_zaman - (time.perf_counter() - t)
Şimdi bu açıklamaları koda dönüştürelim:
from time import perf_counter
def eta(s):
t = perf_counter()
for i in range(1, s + 1):
print(f"\rETA: {((s / (i / (e := perf_counter() - t))) - e)}", end="")
eta(10000000)
Buradaki kodlar, her saniyede kalan işlemin tahmini gerçekleşme süresini hesaplar ve ekrana yazdırır. Buradaki denklemi kendi kodlarınıza göre uyarlayabilirsiniz.