Ana içeriğe geç
Programlama

Pendulum kütüphanesinin Python toplama operatöründeki çağrı yığını tercihi tartışılıyor

Öne çıkanlar

  • Pendulum 3.2.0 sürümündeki toplama operatörü, davranışını belirlemek için çağrı yığınındaki fonksiyon adını denetliyor.
  • Çağrı yığınını inceleme işlemi dosya istatistiklerini kontrol ettiği için toplama işlemini yaklaşık 600 kat yavaşlatıyor.
  • Kabul edilen yeni yama sayesinde yığın denetimi kaldırılarak döngü içi performans beş kat artırılıyor.

Python ekosisteminde tarih ve saat işlemleri için yaygın kullanılan Pendulum kütüphanesi, toplama operatörünün arka planındaki çalışma mantığıyla teknik bir tartışmaya konu oldu. Kütüphane, bir nesneye zaman aralığı eklerken hangi mantığı uygulayacağına karar vermek için çağrı yığınına başvuruyor. Toplama işlevi, kendisini çağıran fonksiyonun adına bakarak standart kütüphanenin saat aritmetiği ile yaz gün dönümü duyarlı aritmetik arasında seçim yapıyor.

Bu yöntem, standart kütüphaneyle tam uyumluluk ve gelişmiş saat aritmetiği vaatlerinin birbiriyle çelişmesinden kaynaklanıyor. Pendulum, standart datetime sınıfını genişlettiği için saat dilimi dönüşümlerinde standart C kodunun toplama işlemini çağırıyor. Ancak kütüphanenin kendi toplama mantığı devreye girdiğinde dönüşüm sonuçları bir saatlik sapmalar üretiyor. Geliştiriciler bu uyumsuzluğu çözmek için traceback yardımıyla çağıran fonksiyonun astimezone olup olmadığını denetleyen bir mekanizma kurdu.

Yığın inceleme yöntemi, dosya sistemi sorguları gerçekleştirdiği için toplama işlemlerini standart kütüphaneye kıyasla 600 kata kadar yavaşlatıyor. Sistemin PyPy ortamında veya farklı saat dilimi araçlarında hatalı sonuçlar ürettiği tespit edildi. Hazırlanan ve kütüphaneye dahil edilen yeni bir yama, astimezone metodunu standart datetime nesneleri üzerinden yürüterek yığın inceleme zorunluluğunu kaldırıyor ve işlem süresini önemli oranda düşürüyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.