Ошибка «недостаточно памяти» при использовании многопроцессорной обработкиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка «недостаточно памяти» при использовании многопроцессорной обработки

Сообщение Anonymous »

У меня есть table_data, который представляет собой тип списка. В нем хранится 3,5 миллиона sqlalchemy ORM-моделей.
Теперь для каждого элемента в списке table_data я хочу предварительно обработать некоторые поля в этих моделях и преобразовать каждое один из них в новую sqlalchemy FooModel.
По сути, у меня есть этот код:

Код: Выделить всё

#In this case, preprocess() function would get a list of table_data models and it would return list of FooModel models

table_data = extract_rows_from_database()
preprocessed_models = preprocess(table_data)
Приведенный выше код работает, но мне интересно, можно ли ускорить этот процесс с помощью многопроцессорной обработки

Код: Выделить всё

# In this case preprocess() function would have one orm model as an argument, and it would return FooModel item

with ProcessPoolExecutor(process_workers) as exe:
for result in exe.map(preprocess,table_data):
preprocessed_models.append(result)
Но когда я использую многопроцессорность, мой контейнер продолжает завершать работу с кодом 137 (недостаточно памяти) или

Код: Выделить всё

 concurrent.futures.process.BrokenProcessPool: A process in the process pool was terminated abruptly while the future was running or pending.
Весь псевдокод функции будет выглядеть так
(на основе этой ссылки) https://stackoverflow.com/a/20849064/17220672

Код: Выделить всё

def function():
table_data = extract_rows_from_database()
preprocessed_models = []
with ProcessPoolExecutor(process_workers) as exe:
for result in exe.map(preprocess,table_data):
preprocessed_models.append(result)
load_in_another_database(preprocessed_models)
**** load_in_another_database() использует sqlalchemy, я бы тоже хотел распараллелить это!

Подробнее здесь: https://stackoverflow.com/questions/785 ... processing
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»