У меня 15 больших фреймов данных (26000x2500 каждый).В настоящее время я использую их как словарь данных, но при необходимости их можно изменить.
Мне нужно выполнить операции с каждым столбцом (около 2500), и они полностью независимы, поэтому я решил, что это хороший кандидатдля параллельной обработки.В данный момент мой код выполняется за несколько часов, но я бы хотел ускорить его.
Вот моя структура кода:
Main.py
import Processor
# Build dataframes from CSV files
dataframes = ...
p = Processor(dataframes)
p.run()
Processor.py
import multiprocessing as mp
class Processor():
def __init__(self, dataframes):
self._dataframes = dataframes
def run():
# Loop at each column
# Launch new process and perform operations on column
# Receive results back and store them
У меня есть 2 вопроса:
- Каков наилучший способ достижения параллельной обработки,Процесс или пул?
- Как я могу совместно использовать кадры данных в памяти, чтобы мне не приходилось копировать их в каждый поток / процесс?