Python
Birleştirme
Tüm uzman konularını birleştirerek çalışan bir uygulama yazarsın.
Tüm katmanları birleştir
Son derste tüm expert konularını tek bir uygulamada birleştirirsin. abs_val fonksiyonu, libc.abs çağırır; Pool.map bu fonksiyonu [-1, -2, -3] listesine paralel uygular.
Bu, metaprogramming (Field + ModelMeta), multiprocessing (Pool) ve ctypes (CDLL + abs) katmanlarını birleştirir. Başlangıç kodu önceki dört dersin çözümünü içerir. Sen yalnızca abs_val fonksiyonunu ve Pool.map çağrısını eklersin. Sonuç: [1, 2, 3].
Uygulama Tümünü birleştir: abs_val + Pool.map
Başlangıç kodunda Tool, Field, ModelMeta, square ve libc hazır. Şimdi abs_val(x) fonksiyonu yaz; libc.abs(x) döndürsün. with Pool() as p: bloğu içinde p.map(abs_val, [-1, -2, -3])'ü result'a ata. result'u yazdır.
Örnek çözümü göster
# Tool sınıfını type() ile oluştur
Tool = type("Tool", (), {
"name": "arac",
"run": lambda self: f"{self.name} calisti",
})
# Field descriptor ve ModelMeta ekle
class Field:
def __set_name__(self, owner, name):
self.name = name
if not hasattr(owner, "fields"):
owner.fields = []
owner.fields.append(name)
class ModelMeta(type):
def __new__(mcs, name, bases, ns):
return super().__new__(mcs, name, bases, ns)
class Model(metaclass=ModelMeta):
ad = Field()
# Paralel kare hesaplama ekle
from multiprocessing import Pool
def square(x):
return x * x
# Yerel abs çağrısı ekle
import ctypes
libc = ctypes.CDLL(None)
def abs_val(x):
return libc.abs(x)
with Pool() as p:
result = p.map(abs_val, [-1, -2, -3])
print(result)
Proje tamamlandı
Tebrikler! Uzman finalını tamamladın. Beş derste bir veri işleme araç seti kurdun: type() ile dinamik sınıf, Field + ModelMeta ile metaprogramming, Pool ile paralel işleme, CDLL ile yerel kod çağrısı.
Son derste tümünü birleştirdin: abs_val fonksiyonu hem libc.abs çağırır hem de Pool.map ile paralel çalışır. Bu, gerçek Python çatılarının çekirdek tekniklerini bir araya getirir. Uzman seviyesindeki tüm konular artık elinin altında.
Kendini test et
-
Tüm uzman kavramlarını eşleştir
- type()
- Dinamik sınıf
- Field
- Descriptor
- Pool
- Paralel havuz
- CDLL
- C kütüphanesi
-
abs_val tanımını tamamla
def abs_val(x):
return libc.____(x)
Cevabı göster
def abs_val(x):
return libc.abs(x)
-
Birleştirme ne yapıyor?
- Yalnızca CDLL kullanır
- Yalnızca Pool kullanır
- Yalnızca type() kullanır
- Pool.map ile abs_val'i paralel çağırır
Cevabı göster
Pool.map ile abs_val'i paralel çağırır — Birleştirme, Pool.map ile abs_val'i paralel çağırır; tüm katmanları birleştirir.
Sıradaki ders: Uzman bölüm sınavı