Siehe diesen Beitrag, wo die Streaming -Engine verwendet wird:
Wie stelle ich sicher, dass ein Polars -Expression -Plugin mehrere CPUs verwendet? (https://docs.pola.rs/user-guide/plugins/expr_plugins/) für einige Berechnungen berechnen. Ich konnte einen großen und praktischen Wert darauf erkennen, dass sie multi-threades gemacht wurden (vor allem, weil sie Elemente betreiben, d. H. Zeilen sind unabhängig). Wenn Sie es parallel wollen, müssen Sie das selbst implementieren, aber dann riskieren Sie schlechte Interaktionen mit der Multithreading von Polars
Wissen Sie, ob es eine intelligente/empfohlene Möglichkeit gibt, dies zu tun? Könnte man den gleichen Thread -Pool (oder ähnlich) verwenden, wie Polar verwendet wird, um hungernde Ressourcen zu vermeiden? Könnten Sie ein Beispiel dafür angeben, wie man den Code im folgenden Beispiel ändern kann, um dies zu erreichen?
Code: Select all
// src/expressions.rs
use polars::prelude::*;
use pyo3_polars::derive::polars_expr;
use std::fmt::Write;
fn pig_latin_str(value: &str, output: &mut String) {
if let Some(first_char) = value.chars().next() {
write!(output, "{}{}ay", &value[1..], first_char).unwrap()
}
}
#[polars_expr(output_type=String)]
fn pig_latinnify(inputs: &[Series]) -> PolarsResult {
let ca = inputs[0].str()?;
let out: StringChunked = ca.apply_into_string_amortized(pig_latin_str);
Ok(out.into_series())
}