Skip to content

Son Yazılar

  • Masaüstü Bilgisayarınıza SSD Nasıl Kurulur
  • Dosya İncelemenizi Basitleştirecek 11 Farklılaştırma ve Birleştirme Aracı
  • Sürüş Alışkanlıklarınızı Analiz Etmek İçin En İyi 10 Kilometre Takip Uygulaması
  • Maliyetleri Optimize Etmenin 6 Yolu
  • Angular’a Bootstrap Nasıl Eklenir? [Step-by-Step]

Most Used Categories

  • trtechpc (8.146)
  • Windows (2.079)
  • Linux (975)
  • Android (739)
  • iOS (372)
  • Instagram (333)
  • Youtube (144)
  • Snapchat (132)
  • Discord (131)
  • MacOS (126)
Skip to content
trtechpc.eu

trtechpc.eu

teknoloji hakkında her şey

Subscribe
  • Home
  • VPN
    • için En İyi VPN Ağları 2023
    • En iyi Android VPN’leri 2023
    • En İyi Ucuz VPN’ler 2023
    • PC için en iyi Windows 10 VPN’ler 2023
  • İşletim sistemleri
    • Android
    • iOS
    • Linux
    • Windows
    • MacOS
  • Sosyal medya
    • Facebook
    • Instagram
    • Twitter
    • Whatsapp
    • Youtube
    • Telegram
    • Pinterest
    • Discord
    • Snapchat
    • Twitch
    • TikTok
  • Oyunlar
    • Fortnite
    • Apex Legends
    • Steam
    • Minecraft
    • PUBG
    • GTA
    • Pokemon
    • League of legends
  • Benim hakkımda.
  • Home
  • trtechpc
  • Kodunuzu Zamanlamak için Python Timeit’i Kullanma

Kodunuzu Zamanlamak için Python Timeit’i Kullanma

jjj2023-01-17
Tweetle
Paylaş
Paylaş
Pin

Bu öğreticide, Python’un timeit modülünden timeit işlevini nasıl kullanacağınızı öğreneceksiniz. Python’da basit ifadelerin ve işlevlerin nasıl zamanlanacağını öğreneceksiniz.

Kodunuzu zamanlamak, bir kod parçasının yürütme süresini tahmin etmenize ve ayrıca kodun optimize edilmesi gereken bölümlerini belirlemenize yardımcı olabilir.

Python’un timeit fonksiyonunun sözdizimini öğrenerek başlayacağız. Ardından, Python modülünüzdeki kod bloklarını ve işlevleri zamanlamak için nasıl kullanılacağını anlamak için örnekleri kodlayacağız. Hadi başlayalım.

İçindekiler

  • Python timeit İşlevi Nasıl Kullanılır?
  • Basit Python İfadelerini Zamanlama
    • Python timeit’i Komut Satırında Çalıştırma
  • Timeit Kullanarak Dizi Ters Çevirme Yöntemlerinin Analizi
    • Dize Dilimleme Kullanarak Python Dizelerini Tersine Çevirme
    • Dizeleri Yerleşik İşlevleri ve Dize Yöntemlerini Kullanarak Ters Çevirme
    • Timeit Kullanarak Yürütme Sürelerini Karşılaştırma
  • timeit Kullanarak Python İşlevlerini Zamanlama
    • Çözüm

Python timeit İşlevi Nasıl Kullanılır?

timeit modülü, Python standart kitaplığının bir parçasıdır ve onu içe aktarabilirsiniz:

import timeit

timeit modülünden timeit işlevini kullanmak için sözdizimi aşağıda gösterildiği gibidir:

timeit.timeit(stmt, setup, number)

Burada:

  • stmt, yürütme süresi ölçülecek olan kod parçasıdır. Bunu basit bir Python dizesi veya çok satırlı bir dize olarak belirtebilir veya çağrılabilir adını iletebilirsiniz.
  • Adından da anlaşılacağı gibi kurulum, genellikle stmt’nin çalışması için bir ön koşul olarak yalnızca bir kez çalıştırılması gereken kod parçasını belirtir. Örneğin, bir NumPy dizisinin oluşturulması için yürütme süresini hesapladığınızı varsayalım. Bu durumda, içe aktarma numpy kurulum kodudur ve gerçek oluşturma, zamanlanacak ifadedir.
  • Parametre numarası, stmt’nin kaç kez çalıştırıldığını gösterir. Sayının varsayılan değeri 1 milyondur (1000000), ancak bu parametreyi istediğiniz başka bir değere de ayarlayabilirsiniz.

Artık timeit() işlevini kullanmanın sözdizimini öğrendiğimize göre, bazı örnekleri kodlamaya başlayalım.

Basit Python İfadelerini Zamanlama

Bu bölümde timeit kullanarak basit Python ifadelerinin yürütme süresini ölçmeye çalışacağız.

Bir Python REPL başlatın ve aşağıdaki kod örneklerini çalıştırın. Burada, 10000 ve 100000 çalıştırma için üs alma ve kat bölme işlemlerinin yürütme süresini hesaplıyoruz.

Zamanlanacak ifadeyi bir Python dizesi olarak ilettiğimize ve ifadedeki farklı ifadeleri ayırmak için noktalı virgül kullandığımıza dikkat edin.

>>> import timeit
>>> timeit.timeit('3**4;3//4',number=10000)
0.0004020999999738706

>>> timeit.timeit('3**4;3//4',number=100000)
0.0013780000000451764

Python timeit’i Komut Satırında Çalıştırma

Timeit’i komut satırında da kullanabilirsiniz. İşte timeit işlev çağrısının komut satırı eşdeğeri:

$ python-m timeit -n [number] -s [setup] [stmt]
  • python -m timeit, timeit’i ana modül olarak çalıştırdığımızı gösterir.
  • n, kodun kaç kez çalıştırılacağını gösteren bir komut satırı seçeneğidir. Bu, timeit() işlev çağrısındaki sayı bağımsız değişkenine eşdeğerdir.
  • Kurulum kodunu tanımlamak için -s seçeneğini kullanabilirsiniz.
  Rainmeter Kaplamaları En Üste Nasıl Sabitlenir

Burada, komut satırı eşdeğerini kullanarak önceki örneği yeniden yazıyoruz:

$ python -m timeit -n 100000 '3**4;3//4'
100000 loops, best of 5: 35.8 nsec per loop

Bu örnekte, yerleşik len() işlevinin yürütme süresini hesaplıyoruz. Dizenin başlatılması, s seçeneği kullanılarak iletilen kurulum kodudur.

$ python -m timeit -n 100000 -s "string_1 = 'coding'" 'len(string_1)'
100000 loops, best of 5: 239 nsec per loop

Çıktıda, en iyi 5 çalıştırma için yürütme süresini aldığımıza dikkat edin. Ne anlama geliyor? Timeit’i komut satırında çalıştırdığınızda, tekrarlama seçeneği r varsayılan değeri 5 olarak ayarlanır. Bu, stmt’nin belirtilen sayıda yürütülmesinin beş kez tekrarlandığı ve yürütme sürelerinin en iyisinin döndürüldüğü anlamına gelir.

Timeit Kullanarak Dizi Ters Çevirme Yöntemlerinin Analizi

Python dizeleriyle çalışırken bunları tersine çevirmek isteyebilirsiniz. Dize ters çevirmeye yönelik en yaygın iki yaklaşım aşağıdaki gibidir:

  • Dize dilimlemeyi kullanma
  • reversed() işlevini ve join() yöntemini kullanma

Dize Dilimleme Kullanarak Python Dizelerini Tersine Çevirme

Dize dilimlemenin nasıl çalıştığını ve bir Python dizesini tersine çevirmek için nasıl kullanabileceğinizi görelim. Some-string sözdizimini kullanma[start:stop] dizin başlangıcında başlayan ve dizin stop-1’e kadar uzanan dizenin bir dilimini döndürür. Bir örnek alalım.

Aşağıdaki ‘Python’ dizesini düşünün. Dizinin uzunluğu 6’dır ve dizin listesi 0, 1, 2’den 5’e kadardır.

>>> string_1 = 'Python'

Hem başlangıç ​​hem de bitiş değerlerini belirttiğinizde, başlangıç ​​noktasından bitiş-1’e uzanan bir dizi dilimi elde edersiniz. Bu nedenle, dizi_1[1:4] ‘yth’ döndürür.

>>> string_1 = 'Python'
>>> string_1[1:4]
'yth'

Başlangıç ​​değerini belirtmediğinizde, varsayılan başlangıç ​​değeri olan sıfır kullanılır ve dilim dizin sıfırdan başlar ve – 1 dur noktasına kadar uzanır.

Burada stop değeri 3 olduğu için dilim index 0’dan başlar ve index 2’ye kadar gider.

>>> string_1[:3]
'Pyt'

Stop indeksini eklemediğinizde dilimin start indeksinden (1) başladığını ve string sonuna kadar uzandığını görürsünüz.

  170+ Sevimli Wi-Fi Adı

>>> string_1[1:]
'ython'

Hem başlangıç ​​hem de bitiş değerlerinin yok sayılması, tüm dizenin bir dilimini döndürür.

>>> string_1[::]
'Python'

Step değeri ile bir dilim oluşturalım. Başlat, durdur ve adım değerlerini sırasıyla 1, 5 ve 2 olarak ayarlayın. Dizinin 1’den başlayıp 4’e kadar uzanan (bitiş noktası 5 hariç) her ikinci karakteri içeren bir dilimini alıyoruz.

>>> string_1[1:5:2]
'yh'

Negatif bir adım kullandığınızda, dizenin sonunda başlayan bir dilim elde edebilirsiniz. Adım -2 olarak ayarlandığında, string_1[5:2:-2] aşağıdaki dilimi verir:

>>> string_1[5:2:-2]
'nh'

Dizinin ters bir kopyasını elde etmek için başlangıç ​​ve bitiş değerlerini atlıyoruz ve gösterildiği gibi adımı -1 olarak ayarlıyoruz:

>>> string_1[::-1]
'nohtyP'

Özetle: dizi[::-1] dizenin ters bir kopyasını döndürür.

Dizeleri Yerleşik İşlevleri ve Dize Yöntemlerini Kullanarak Ters Çevirme

Python’daki yerleşik reversed() işlevi, dizenin öğeleri üzerinde bir ters yineleyici döndürür.

>>> string_1 = 'Python'
>>> reversed(string_1)
<reversed object at 0x00BEAF70>

Böylece bir for döngüsü kullanarak ters yineleyicide dolaşabilirsiniz:

for char in reversed(string_1):
    print(char)

Ve dizinin elemanlarına ters sırayla erişin.

# Output
n
o
h
t
y
P

Ardından, ters yineleyicide join() yöntemini şu sözdizimiyle çağırabilirsiniz: .join(reversed(some-string)).

Aşağıdaki kod parçacığı, ayırıcının sırasıyla bir tire ve bir boşluk olduğu birkaç örnek gösterir.

>>> '-'.join(reversed(string1))
'n-o-h-t-y-P'
>>> ' '.join(reversed(string1))
'n o h t y P'

Burada ayırıcı istemiyoruz; dizenin ters bir kopyasını almak için ayırıcıyı boş bir dizeye ayarlayın:

>>> ''.join(reversed(string1))
'nohtyP'

”.join(reversed(some-string)) kullanmak, dizenin ters çevrilmiş bir kopyasını döndürür.

Timeit Kullanarak Yürütme Sürelerini Karşılaştırma

Şimdiye kadar, Python dizelerini tersine çevirmek için iki yaklaşım öğrendik. Ama hangisi daha hızlı? Hadi bulalım.

Basit Python ifadelerini zamanladığımız önceki bir örnekte, herhangi bir kurulum kodumuz yoktu. Burada Python dizesini tersine çeviriyoruz. Dize ters çevirme işlemi sayı ile belirtilen sayıda çalışırken, kurulum kodu yalnızca bir kez çalışacak dizenin başlatılmasıdır.

>>> import timeit
>>> timeit.timeit(stmt="string_1[::-1]", setup = "string_1 = 'Python'", number = 100000)
0.04951830000001678
>>> timeit.timeit(stmt = "''.join(reversed(string_1))", setup = "string_1 = 'Python'", number = 100000)
0.12858760000000302

Belirli bir diziyi tersine çevirmek için aynı sayıda çalıştırma için, dize dilimleme yaklaşımı, join() yöntemini ve reversed() işlevini kullanmaktan daha hızlıdır.

  Ally Grace Dönemi nedir?

timeit Kullanarak Python İşlevlerini Zamanlama

Bu bölümde Python fonksiyonlarının timeit fonksiyonu ile nasıl zamanlanacağını öğrenelim. Bir dize listesi verildiğinde, aşağıdaki işlev hasDigit en az bir basamak içeren dizelerin listesini döndürür.

def hasDigit(somelist):
     str_with_digit = []
     for string in somelist:
         check_char = [char.isdigit() for char in string]
         if any(check_char):
            str_with_digit.append(string)
     return str_with_digit

Şimdi bu Python işlevinin hasDigit() yürütme süresini timeit kullanarak ölçmek istiyoruz.

Önce zamanlanacak ifadeyi (stmt) belirleyelim. Argüman olarak bir dizge listesiyle hasDigit() işlevine yapılan çağrıdır. Ardından, kurulum kodunu tanımlayalım. Kurulum kodunun ne olması gerektiğini tahmin edebilir misiniz?

İşlev çağrısının başarıyla çalışması için kurulum kodu aşağıdakileri içermelidir:

  • hasDigit() işlevinin tanımı
  • Dizelerin bağımsız değişken listesinin başlatılması

Kurulum dizesindeki kurulum kodunu aşağıda gösterildiği gibi tanımlayalım:

setup = """
def hasDigit(somelist):
    str_with_digit = []
    for string in somelist:
      check_char = [char.isdigit() for char in string]
      if any(check_char):
        str_with_digit.append(string)
    return str_with_digit
thislist=['puffin3','7frost','blue']
     """

Ardından, timeit işlevini kullanabilir ve hasDigit() işlevinin 100000 çalıştırma için yürütme süresini elde edebiliriz.

import timeit
timeit.timeit('hasDigit(thislist)',setup=setup,number=100000)
# Output
0.2810094920000097

Çözüm

İfadeleri, işlevleri ve diğer çağrılabilir öğeleri zamanlamak için Python’un timeit işlevini nasıl kullanacağınızı öğrendiniz. Bu, kodunuzu karşılaştırmanıza, aynı işlevin farklı uygulamalarının yürütme sürelerini karşılaştırmanıza ve daha pek çok şeye yardımcı olabilir.

Bu eğitimde öğrendiklerimizi gözden geçirelim. timeit() işlevini timeit.timeit(stmt=…,setup=…,number=…) söz dizimi ile kullanabilirsiniz. Alternatif olarak, kısa kod parçacıklarını zamanlamak için komut satırında timeit’i çalıştırabilirsiniz.

Bir sonraki adım olarak, sırasıyla zaman ve bellek için kodunuzun profilini çıkarmak üzere line-profiler ve memprofiler gibi diğer Python profil oluşturma paketlerini nasıl kullanacağınızı keşfedebilirsiniz.

Ardından, Python’da saat farkının nasıl hesaplanacağını öğrenin.

Yazı dolaşımı

Previous: Daha İyi Konfor ve Performans için En İyi 10 4K Oyun Monitörü
Next: CSS’de Ustalaşmak İçin En İyi 12 Çevrimiçi Kurs ve Kitap

Related Posts

Masaüstü Bilgisayarınıza SSD Nasıl Kurulur

2023-04-01 jjj

Dosya İncelemenizi Basitleştirecek 11 Farklılaştırma ve Birleştirme Aracı

2023-03-31 jjj

Sürüş Alışkanlıklarınızı Analiz Etmek İçin En İyi 10 Kilometre Takip Uygulaması

2023-03-31 jjj

EN SON MAKALELER

  • Masaüstü Bilgisayarınıza SSD Nasıl Kurulur
  • Dosya İncelemenizi Basitleştirecek 11 Farklılaştırma ve Birleştirme Aracı
  • Sürüş Alışkanlıklarınızı Analiz Etmek İçin En İyi 10 Kilometre Takip Uygulaması
  • Maliyetleri Optimize Etmenin 6 Yolu
  • Angular’a Bootstrap Nasıl Eklenir? [Step-by-Step]
  • Daha İyi Belgeler Yazmak için En İyi 9 Markdown Editörü
  • Python Hashlib ile Güvenli Hashing
  • Runway Metinden Videolar Oluşturuyor, Yeni Microsoft Ekipleri Başlatıldı
  • Teşvik Etmek ve Para Kazanmak için En İyi 47 Yapay Zeka Ortaklık Programı
  • KOBİ’ler için Bulut (SaaS) Muhasebe Avantajları [+4 Solutions]
  • Çocukların Pratik Yapması ve Öğrenmesi İçin En İyi 11 Çizim Tableti
  • Çarpıcı Görsel Efektler için En İyi 11 React Animasyon Kitaplığı
  • Müzik Dinlemeniz İçin Size Para Ödeyen 10 Site [2023]
  • Karmaşık Matematik Denklemlerini Kolayca Çözmek için En İyi 10 Hesap Makinesi Uygulaması (Android ve iOS)
  • Windows ve Mac’inizi Temiz Tutmak için En İyi 11 Yinelenen Dosya Bulucu
  • Bunlar Nedir ve Nasıl Erişilir?
  • Ürün İş Listenizi Önceliklendirme ve İş Başarısını En Üst Düzeye Çıkarma
  • İş ve Kişisel Kullanım için En İyi 5 Yapay Zeka Ses Üreteci –
  • Riski Azaltmak için COSO Çerçevesi Nasıl Kullanılır?
  • Müzisyenler ve İçerik Oluşturucular için En İyi 14 Şarkı Sözü Video Oluşturucu [2023]

Twitter

#technology

coruzant Coruzant Technologies @coruzant ·
9m

How Do We Ensure Good Ethics in Building AI Platforms? https://buff.ly/423J4Nn #Ethics #EmergingTech #AI #MachineLearning #Technology #ArtificialIntelligence #NLP #RPA #ChatGPT4 #Innovation #GoodEthics #Corruption #Coruzant

Reply on Twitter 1642500124671717376 Retweet on Twitter 1642500124671717376 Like on Twitter 1642500124671717376 Twitter 1642500124671717376
dgb_isme48 Michael Kutsche @dgb_isme48 ·
10m

#Tech #NewsFlash 08/31 Johnson: UK has financial strength to get through cost-of-living crisis #Technology #Bot #News

Reply on Twitter 1642499846278971392 Retweet on Twitter 1642499846278971392 Like on Twitter 1642499846278971392 Twitter 1642499846278971392
cybersecinsider CybersecInsider @cybersecinsider ·
11m

Source Code of Twitter leaked on GitHub http://ow.ly/xCYF50Ntx3B #CyberSecurity #Technology

Reply on Twitter 1642499661742108673 Retweet on Twitter 1642499661742108673 Like on Twitter 1642499661742108673 Twitter 1642499661742108673
khybernews247 Khyber News @khybernews247 ·
11m

سمارٹ فون ایپ, گوگل نیوز " سے باخبر رہیے تازہ ترین پوری دنیا کی نیوز

#LatestApps #technology #technews #apps #Googlenews

Reply on Twitter 1642499640917643270 Retweet on Twitter 1642499640917643270 Like on Twitter 1642499640917643270 Twitter 1642499640917643270
Load More
Copyright All Rights Reserved | Theme: BlockWP by Candid Themes.