---
title: "Mizu – Paylaşımlı Bellek Üzerinden Sıfır Kopyalamalı Paralel R ve Python"
url: https://blog.edumints.com/mizu-paylasimli-bellek-uzerinden-sifir-kopyalamali-paralel-r-ve-python
category: "Yazılım"
date: 2026-11-08T15:06:33.157Z
publisher: Edumints Blog
lang: tr-TR
source_name: "Hacker News"
source_url: https://github.com/shikokuchuo/pymizu
---

# Mizu – Paylaşımlı Bellek Üzerinden Sıfır Kopyalamalı Paralel R ve Python

## pymizu: İş Parçacığı Hızında Asenkron ve Paralel Python

**pymizu**, paylaşımlı bellek (shared memory) üzerinden iş parçacığı (thread) hızında asenkron ve paralel Python çalıştırmayı sağlayan yenilikçi bir kütüphanedir. Soketler üzerinden yaklaşık 100 µs süren bir görev gidiş-dönüş (round trip) süresi **pymizu** ile 1 µs seviyesine düşer; böylece iş yüklerini tıpkı iş parçacıklarında olduğu gibi çok küçük parçalara bölebilirsiniz. Listeler, sözlükler, NumPy dizileri ve Arrow tabloları gibi yaygın veri yapıları, Python ve R arasında **sıfır kopyalama (zero-copy)** görünümleri olarak paylaşılabilir.

Varsayılan CPython yapısında GIL (Global Interpreter Lock), CPU yoğunluklu iş parçacıklarını aynı anda tek bir çekirdekte çalıştırır. Bu nedenle Python'da hesaplama paralelliği genellikle çoklu süreç (multiprocess) kullanımı anlamına gelir. Süreçler aynı zamanda hataları izole eder: Çöken bir işçi süreç (worker), ana sistemi beraberinde çökertmez. Kanallar ve iş çalma (work-stealing) görev havuzları, POSIX paylaşımlı belleği (Linux, macOS) veya Win32 dosya eşlemeleri (Windows) üzerinde çalışır. Kilitsiz (lock-free) tek üreticili tek tüketicili halkalar, toplu yayınlama, sıcak yolda (hot path) çekirdek (kernel) dışına çıkmayan bekleme mekanizması ve bir süreç sonlandığında işletim sistemi bildirimi gibi mimari avantajlar sunar.

**pymizu**, kilitsiz paylaşımlı bellek süreçler arası iletişimi (IPC) için geliştirilmiş bir C kütüphanesi olan **libmizu** üzerine inşa edilmiştir. **mizu** aynı çekirdeği R dili için bağlar; böylece Python ve R birbirleriyle doğrudan ve yüksek hızda konuşabilir.

### Temel Özellikler

- **Sıfır kopyalamalı NumPy dizileri ve Arrow değişimi:** `pyarrow`, `polars`, `pandas` ve `duckdb` ile veri kopyalama maliyeti olmadan entegrasyon sağlar.
- **Doğrudan `concurrent.futures.Executor` uyumluluğu:** Gerçek `Future` nesneleri, `wait`, `as_completed` ve `asyncio.wrap_future` desteği ile mevcut kodlara kolayca adapte edilir.
- **Olay güdümlü (event-driven) `asyncio`:** Görevleri ve haritalamaları `await` ile bekleme, kanallarda `async for` ve `recv_async()` kullanımı; yoklama (polling) iş parçacıkları olmadan veri geldiği anda uyanma sağlar.
- **Tekrarlanabilir paralel rastgele sayılar (`seed=`):** İşçi sayısı veya iş çalma sırası ne olursa olsun her çalıştırmada birebir aynı sonuçları üretir.
- **İç içe (nested) paralel haritalamalar:** Bir görev, kilitlenme (deadlock) riski olmadan kendi havuzu üzerinde tekrar haritalama yapabilir.

> **Yaşam Döngüsü:** Deneysel (experimental). API henüz tam olarak kararlı değildir ve geri bildirimlere göre değişiklik gösterebilir.

## Kurulum

PyPI üzerinden kurulum:

```bash
pip install pymizu
```

Veya GitHub üzerinden geliştirme sürümü:

```bash
pip install git+https://github.com/shikokuchuo/pymizu
```

64-bit platformda Python 3.10 veya daha yeni bir sürüm gerektirir. Eklenti, kendi içinde barındırdığı C çekirdeğini derlediği için harici bir sistem kütüphanesine ihtiyaç duymaz.

**İsteğe bağlı ekstralar:**

- `pymizu[numpy]`: Sıfır kopyalamalı dizi görünümleri ve ham katmanlı dizi hazırlama.
- `pymizu[cloudpickle]`: Havuz görevleri olarak lambda ifadeleri, kapanışlar (closures) ve yerel fonksiyonların kullanımı.

GitHub kurulumunda ekstra bir özellik talep etmek için `pip install "pymizu[numpy] @ git+https://github.com/shikokuchuo/pymizu"` komutunu kullanabilirsiniz.

## Hızlı Başlangıç (Quickstart)

```python
import pymizu

with pymizu.Pool.create(4) as pool:
    task = pool.submit(pow, 2, 16)
    print(task.collect(timeout=5))
```

## Kıyaslamalar (Benchmarks) ve Pratik Çıkarımlar

Apple M4 Pro üzerinde yapılan kıyaslamalarda **pymizu**, standart kütüphanedeki `concurrent.futures` havuzlarına kıyasla iletişim ek yükünü (overhead) radikal biçimde azaltır. Yazılım geliştirme ve veri bilimi projelerinde büyük veri setlerini süreçler arasında serileştirme (pickling) maliyeti olmadan taşımak, özellikle yüksek performanslı veri işleme boru hatlarında ve R-Python hibrit mimarilerinde ciddi bir hız ve bellek avantajı sağlar. Standart `Executor` arayüzünü desteklemesi sayesinde mevcut paralel Python kodlarınızı minimum değişiklikle hızlandırabilirsiniz.

---

**Kaynak:** Hacker News (https://github.com/shikokuchuo/pymizu)
**Yayıncı:** [Edumints Blog](https://blog.edumints.com) · Alıntılarken bu URL'ye bağlantı verin: https://blog.edumints.com/mizu-paylasimli-bellek-uzerinden-sifir-kopyalamali-paralel-r-ve-python
