Python Örneklerle Timeit()

⚡ Akıllı Özet

Python Timeit() fonksiyonu, küçük bir kod parçasının çalışma süresini, onu birçok kez çalıştırarak ve minimum süreyi döndürerek ölçer. timeit, repeat ve default_timer yöntemlerini destekler ve komut dosyalarından veya komut satırından çalışır.

  • ⏱️ Timeit'in Tanımı: Bir kod parçasının çalışma süresini ölçer ve birçok çalıştırma üzerinden alınan minimum değeri döndürür.
  • 🧩 Parametreler: STMT, `setup`, `timer` ve `number` komutları, hangi komutların ne sıklıkla çalıştırılacağını kontrol eder.
  • 🔁 Yöntem: `timeit()`, `repeat()` ve `default_timer()` farklı zamanlama seçenekleri sunar.
  • ???? Komut satırı: `python -m timeit` komutunu `-n`, `-r` ve `-s` gibi bayraklarla çalıştırın.
  • Neden Kullanmalısınız: Çöp toplama işlemini devre dışı bırakır ve işletim sistemine göre en doğru zamanlayıcıyı seçer.

Python Timeit()

Nedir? Python Timeit()?

Python zaman saati() bir yöntemdir Python Verilen kod parçacığının yürütme süresini ölçmek için kütüphane. Python kütüphane kod ifadesini 1 milyon kez çalıştırır ve verilen kod parçacıkları kümesinden alınan minimum süreyi sağlar. Python timeit() kodun performansını kontrol etmeye yardımcı olan kullanışlı bir yöntemdir.

Sözdizimi

timeit.timeit(stmt, setup,timer, number)

Parametreler

  • stmt: Bu, yürütme süresini ölçmek istediğiniz kodu alacaktır. Varsayılan değer "geçti"dir.
  • kurulum: Bu, stmt'den önce yürütülmesi gereken kurulum ayrıntılarına sahip olacaktır. Varsayılan değer "pass"tır.
  • kronometre: Bu, zamanlayıcı değerine sahip olacaktır, timeit() zaten varsayılan bir değer kümesine sahiptir ve bunu göz ardı edebiliriz.
  • numara: Stmt burada verilen numaraya göre yürütülecektir. Varsayılan değer 1000000'dır.

timeit() ile çalışmak için modülü aşağıda gösterildiği gibi içe aktarmamız gerekir:

import timeit

İlk Örnek

İşte timeit() fonksiyonunun basit bir örneği

Code Örnek 1

# testing timeit()
import timeit
print(timeit.timeit('output = 10*5'))

Çıktı:

0.06127880399999999

Bize basit kod ifadesi çıktısının yürütme süresini = 10*5 veren basit bir örnek gördük ve yürütmek için gereken süre 0.06127880399999999'dur.

Python kodunda birden fazla satırın zamanlanması

timeit.timeit()'te birden fazla satır kodu çalıştırmanın iki yolu vardır: Satırları noktalı virgülle ayırmak veya kodu üçlü tırnak işareti içine alarak bir dize olarak eklemek.

İşte çalışmasını gösteren örnekler.

Örnek 1: Noktalı virgül kullanma

import timeit
print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))

Çıktı:

The time taken is  0.137031482

Örnek 2: Üçlü tırnak işareti kullanma

import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))

Çıktı:

C:\pythontest>python testtimeit.py
The time taken is  0.182619178

timeit – Yöntemler

Burada 2 önemli timeit yöntemi var

timeit.default_timer() : Bu, çalıştırıldığında varsayılan zamanı döndürür.

timeit.repeat(stmt, kurulum, zamanlayıcı, tekrar, sayı) : timeit() ile aynıdır, ancak tekrarlama ile timeit(), tekrarın verilme sayısı olarak adlandırılır.

Program Örneği 1

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))

Çıktı:

0.46715912400000004

Örnek 2

default_timer() Örnek

# testing timeit()

import timeit
import random

def test():
    return random.randint(10, 100)

starttime = timeit.default_timer()
print("The start time is :",starttime)
test()
print("The time difference is :", timeit.default_timer() - starttime)

Çıktı:

The start time is : 0.220261875
The time difference is : 0.0004737320000000045

Örnek 3: timeit.repeat()

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))

Çıktı:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() işlevi, timeit.timeit() işlevine benzer şekilde çalışır; tek farkı yineleme argümanında alır ve yürütme süresini yineleme sayısına göre değerlerle dizi biçiminde geri verir.

Komut satırı arayüzünde timeit.timeit() zamanlama fonksiyonunun çalıştırılması

Komut satırında timeit() içindeki işlevinizi yürütmek için gereken sözdizimi aşağıdaki gibidir:

python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]

Komut satırı parametreleri:

  • -n N: kodun kaç kez yürütülmesini istediğiniz.
  • -r N: timeit() fonksiyonunun kaç kez tekrarlanmasını istediğiniz
  • -s S: Bu, kod çalıştırılmadan önce yürütülecek kurulum ayrıntılarını içerecektir.
  • -t: Bunun için time.time() işlevini kullanabilirsiniz.
  • -c: Bunun için time.clock() işlevini kullanabilirsiniz.
  • -h: yardım için
  • kod ifadesi: Kod ayrıntıları.

Örnek E-posta

C:\pythontest>python -m timeit -s 'text="hello world"'
20000000 loops, best of 5: 13.1 nsec per loop

Komut satırında çalıştırmanın başka bir yolu da aşağıda gösterildiği gibidir:

Örnek E-posta

>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is  0.15048536300000137
>>>

timeit() neden yürütme süresini ölçmenin en iyi yoludur? Python kod?

Timeit() işlevinin yürütme süresini ölçmenin en iyi yolu olduğunu düşünmemizin birkaç nedeni var.

  • Kod ifadesini varsayılan değer olan 1 milyon kez çalıştırır ve bundan sonra size harcanan minimum süreyi döndürür. Ayrıca time() fonksiyonunda argüman sayısını ayarlayarak 1 milyonu artırabilir/azaltabilirsiniz.
  • Test yürütülürken çöp toplama işlemi time() fonksiyonu ile her seferinde devre dışı bırakılır.
  • timeit() dahili olarak, kullanılan işletim sisteminize göre doğru zamanı alır. Örneğin, time.clock() işlevini kullanacak Windows Mac ve Linux için işletim sistemi ve time.time().

SSS

`timeit.timeit()` ifadesi belirli sayıda çalıştırılır ve tek bir toplam süre döndürülür. `timeit.repeat()` ise bu ölçümün tamamını birkaç kez çalıştırır ve sonuçların bir listesini döndürerek en iyisini seçmenize olanak tanır.

`timeit`, ölçüm sırasında çöp toplama işlemini devre dışı bırakarak arka plan temizliğinin zamanlamayı bozmasını engeller. Bu, sonuçları daha tutarlı ve karşılaştırılabilir hale getirir ve yalnızca test edilen kod parçasının yürütme süresine odaklanır.

`stmt` dizesi içinde ifadeleri noktalı virgülle ayırabilir veya üçlü tırnak kullanarak çok satırlı bir dize geçirebilirsiniz. Fonksiyonlar için, bunları `setup` dosyasında tanımlayın ve `stmt` dosyasından çağırın.

Yapay zeka, kodun profilini çıkarabilir, yavaş döngüleri veya maliyetli çağrıları belirleyebilir, vektörleştirilmiş veya yerleşik alternatifler önerebilir ve daha iyi veri yapıları tavsiye edebilir.ping Geliştiriciler, TimeIt'in en büyük darboğazları gösterdiği alanlarda optimizasyona odaklanıyor.

Evet. Verilen bir kod parçası ve Timeit sonuçlarına göre, yapay zeka liste anlama ifadeleri, üretici ifadeler veya kütüphane fonksiyonları gibi yeniden yazma önerileri sunabilir; ardından iyileştirmenin gerçek olduğunu doğrulamak için Timeit'i tekrar çalıştırırsınız.

Bu yazıyı şu şekilde özetleyin: