Verwenden von Multithreading in Polars Expression -Plugins

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Verwenden von Multithreading in Polars Expression -Plugins

by Anonymous » 03 Jun 2025, 10:17

Update:
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())
}

Top