pymizu reduce el coste de comunicación entre procesos Python de 100 µs a menos de 1 µs
Mizu – zero-copy parallel R and Python over shared memory
pymizu es una librería experimental que ejecuta tareas asíncronas y paralelas en Python sobre memoria compartida POSIX o Win32, en lugar de sockets. Un ida y vuelta de tarea baja de ~100 µs a menos de 1 µs, lo que permite dividir el trabajo con la granularidad de un hilo. Comparte listas, dicts, arrays de numpy y tablas de Arrow sin copia entre Python y R mediante mizu, e incluye un Executor compatible con concurrent.futures.
Un ida y vuelta de tarea baja de ~100 µs por sockets a menos de 1 µs, así que puedes dividir el trabajo con la misma finura que con hilos.
- stdbrouw
Increíble. Recuerdo que el año pasado me decepcionó bastante mirai al enterarme de que no podía ofrecer acceso compartido a una tabla arrow en memoria. El procesamiento multinúcleo en R es genial cuando funciona, pero demasiado a menudo es solo cuestión de tiempo que copias de datos no deseadas e innecesarias destrocen por completo el rendimiento.
- shikokuchuo
Aquí el autor: escribí mizu (R) y pymizu (Python), paquetes que ofrecen computación asíncrona y paralela sin bloqueos sobre memoria compartida, construidos sobre el mismo núcleo en C, libmizu. El enlace de arriba es para el paquete de Python.
Un ida y vuelta de tarea baja a menos de un microsegundo, desde unos 100 µs por sockets con el ProcessPoolExecutor de Python o mirai, mi otro framework de R. Estos son números de mi portátil (un M4 Pro), y los scripts de benchmark están en los repos para que los ejecutes.
Los workers toman tareas de colas sin bloqueos, no hay un despachador de tareas, y se evitan las llamadas al sistema en la ruta crítica.
`PoolExecutor` es un `concurrent.futures.Executor` que se puede usar directamente, las tareas son awaitables en asyncio, y los arrays de NumPy y los frames de polars, pyarrow y pandas cruzan como vistas de copia cero. Como mizu y pymizu comparten el mismo formato de transmisión, los data frames y los tipos Arrow también cruzan con copia cero entre pools de workers de distintos lenguajes.
Por supuesto, esto es solo para una única máquina, ya que usa memoria compartida. La API sigue siendo experimental. Los comentarios sobre usabilidad y los informes de errores son muy bienvenidos en los repos. Me encantaría saber de sitios donde te gustaría ver esto usado.
Artículo con los benchmarks completos y los ejemplos de código en R/Python: https://opensource.posit.co/blog/2026-11-05_mizu-0-1-0/