Ana içeriğe geç
Programlama

Mizu paylaşımlı bellek üzerinden Python ve R'ı sıfır kopyayla bağlıyor

Öne çıkanlar

  • Görev gidiş dönüş gecikmesi soketlerdeki 100 mikrosaniyeden 1 mikrosaniyenin altına iniyor.
  • NumPy dizileri ve Arrow tabloları Python ile R arasında sıfır kopyayla paylaşılıyor.
  • ProcessPoolExecutor kıyaslamalarında önemsiz görevlerde 135 kat hızlanma elde edildi.

Geliştiriciler, Python ve R arasında paylaşımlı bellek üzerinden kilit içermeyen iletişim sağlayan açık kaynaklı kütüphane Mizu'yu yayımladı. libmizu adlı C çekirdeği üzerine inşa edilen sistem, soket tabanlı geleneksel süreçler arası iletişimin getirdiği gecikmeyi 100 mikrosaniyeden 1 mikrosaniyenin altına indiriyor. CPython'ın genel yorumlayıcı kilidi kısıtlamalarını aşmak için ayrı süreçler kullanan kütüphane, POSIX paylaşımlı bellek ve Win32 dosya eşlemeleriyle iş çalma tabanlı görev havuzları çalıştırıyor.

Sistem, veri kopyalama maliyetini ortadan kaldırarak NumPy dizileri, Python listeleri, sözlükler ve Apache Arrow tablolarını iki dil arasında sıfır kopya görünümleri olarak paylaştırıyor. Polars, pandas, pyarrow ve duckdb gibi popüler veri araçlarını destekleyen kütüphane, R süreçlerini doğrudan alt iş parçacığı gibi yönetebiliyor. Test ölçümlerine göre pymizu, standart kütüphanedeki ProcessPoolExecutor bileşenine kıyasla önemsiz görev gidiş dönüşlerinde 135 kata varan hız artışı sağlıyor ve saniyede 2,39 milyon görev aktarabiliyor.

Mizu, standart Python concurrent.futures arayüzüne uyumlu olarak çalıştığı için mevcut kod tabanlarına kolayca uyarlanabiliyor. Olay güdümlü asyncio desteği sunan kütüphane, kanallara veri geldiğinde görevleri uyandırarak çekirdeğe yük bindiren bekleme döngülerini devreden çıkarıyor. Henüz deneysel aşamada bulunan ve 64-bit platformlarda Python 3.10 ve üzerini zorunlu kılan proje, MIT lisansı altında açık kaynak olarak dağıtılıyor.

Kaynak

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