Python'da Getiri VS Verim — Kısa Bir Çizgi Roman

May 05 2023
# 'verim' Python kodunuzu neden daha hızlı hale getirebilir?
Ve bu sorun, uğraştığımız daha fazla veriyle daha da kötüleşiyor. Sırada 1000 kişi varsa ne olur? 'return' anahtar sözcüğü 'verim' anahtar sözcüğü, return anahtar sözcüğü gibi, verim anahtar sözcüğü de bir işlevin çıktısını belirtir.

Ve bu sorun, uğraştığımız daha fazla veriyle daha da kötüleşiyor. Sırada 1000 kişi varsa ne olur?

'dönüş' anahtar kelimesi

def add10(x):
  return x

x = add10(4)        # x = 14
def get_takoballs(orders):
  output = []
  for order in orders:
    output.append(f'{order} takoballs')
  return output

y = get_takoballs([4,6,8])
# y = ['4 takoballs', '6 takoballs', '8 takoballs']

'verim' anahtar kelimesi

Anahtar kelime gibi return, yieldanahtar kelime de bir fonksiyonun çıktısını belirtir.

Ancak, returnanahtar sözcükten farklı olarak, bir işlev yieldbirden çok çıktı verebilir. Anahtar sözcük yield, çalıştırıldıktan sonra tüm işlevi durdurmaz.

def testfunction():
  yield 4
  yield 5
  yield 6

for n in testfunction():
  print(n)

# 4
# 5
# 6
def get_takoballs(orders):
  for order in orders:
    yield f'{order} takoballs'

for food in get_takoballs([4, 6, 8]):
  print(food)

# 4 takoballs
# 6 takoballs
# 8 takoballs

Diyelim ki tako standımızda 10000 müşterimiz var (sadece 3 yerine).

orders = # a list containing 10000 orders

def return_stall(orders):
  # process all 10000 orders first
  # then output all 10000 processed orders
  output = []
  for order in order:
    output.append(f'{order} takoballs')
  return output

def yield_stall(orders):
  # process 1 order, then output it
  # repeat til all 10000 orders are completed
  for order in orders:
    yield f'{order takoballs}'

Fonksiyon için yield_stall, her sipariş işlenir işlenmez teslim edilir (müşteriye verilir). İlk adamın sadece kendisinin ve sadece emrinin bitmesini beklemesi gerekiyor.

Çözüm

Büyük miktarda veriyle uğraşıyorsanız, yieldişleri hızlandırmak için bir oluşturucu işlevi (kullanan bir işlev) kullanmayı düşünün. Umarım bu açık ve yardımcı olmuştur!

Bazı final sözleri

Bu hikaye değer sağladıysa ve biraz destek göstermek isterseniz, şunları yapabilirsiniz:

  1. Bu hikaye için 50 kez alkışlayın (bu gerçekten, gerçekten bana yardımcı oluyor)
  2. Bağlantımı kullanarak bir Medium üyeliği için kaydolun (sınırsız Medium öyküsünü okumak için ayda 5 ABD doları)

Seviye Atlama Kodlama

Topluluğumuzun bir parçası olduğunuz için teşekkürler! Gitmeden önce:

  • Hikaye için alkışlayın ve yazarı takip edin
  • Seviye Atlama Kodlama yayınında daha fazla içerik görüntüleyin
  • Ücretsiz kodlama mülakat kursu ⇒ Kursu Görüntüle
  • Bizi takip edin: Twitter | LinkedIn | Bülten