Чтобы повысить производительность, я попробовал чтение CSV-файл один раз перед запуском параллельных процессов и передачей полученного DataFrame каждому процессу. Однако я заметил, что в этой настройке выполнение кода заняло значительно больше времени.
Вот упрощенная версия моего рабочего процесса:
Код: Выделить всё
import polars as pl
from concurrent.futures import ProcessPoolExecutor
def process_data(df, numbers):
# Filter and process data (example)
return df.filter(pl.col("Points").is_in(numbers))
# Reading inside each process
def worker(task_param):
df = pl.read_csv("path/to/file.csv")
return process_data(df, task_param)
with ProcessPoolExecutor(max_workers=4) as executor:
task_params_list = [[10, 20], [30, 40], [50, 60], [70, 80]]
results = list(executor.map(worker, task_params_list))
Код: Выделить всё
df = pl.read_csv("path/to/file.csv")
def process_data(df, numbers):
# Filter and process data (example)
return df.filter(pl.col("Points").is_in(numbers))
def worker(task_param):
df = task_param[0]
numbers = task_param[1:]
return process_data(df, numbers)
with ProcessPoolExecutor(max_workers=4) as executor:
task_params_list = [[df, 10, 20], [df, 30, 40], [df, 50, 60], [df, 70, 80]]
results = list(executor.map(worker, task_params_list))
Мои вопросы:
Как мне избежать повторного чтения файла CSV в каждом параллельном процессе, сохраняя при этом хорошую производительность?
Есть ли лучший подход к совместному использованию или повторному использованию Polars DataFrame в параллельных процессах?
>Любые рекомендации или идеи были бы очень полезны оценил.
Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-python
Мобильная версия