ПРЕДЫСТОРИЯ #
Предположим есть Магазины. В Магазинах есть товар для продажи.
Задача скрипта спрогнозировать кол-во продаж по Каждому Магазину, по Каждому Товару.
Будем считать, что скрипт разделён на две части.
1. Обработка входящих данных.
а. Загрузка данных.
б. Чистка этих данных и отбор только нужных.
2. Сам этап прогнозирования.
а. Первый цикл проходит по Магазинам.
б. Второй цикл проходит по Товару.
(Цикл в Цикле). Дальше в скрипте обозначено место, которое надо переписать для многопоточности. Не многопроцессорность! Функция "map()" - не подходит.
ТЕКУЩАЯ РАБОТА #
Выполнение Первой части скрипта занимает примерно 1 минуту.
Выполнения прогнозирования по 1 Магазину занимает 3-10 секунд (в среднем 4 сек.).
Прогнозирования работает последовательно (2 цикла "for").
Магазинов примерно 370+.
Общее время выполнения скрипта примерно 40 минут +-.
ЗАДАЧА #
Рассмотрим ТРИ Магазина.
Данный скрипт прогнозирует 3 магазина за 4+4+4=12 сек.
Я хочу, чтобы 3 магазина прогнозировались за 4-5 сек. (в отдельных потоках).
В итоге (в идеале) хочу сократить время выполнения скрипта с 40 мин. до 5-7 мин.
Все результаты прогнозирования должны быть записаны в ОДИН "pandas.DataFrame".
ПРОБЛЕМА #
Я уже несколько недель пытался это сделать, но желаемого результата так и не добился.
У меня получилось добиться, как таковой, многопоточности. Но есть предположение, что у меня не получилось решить вопрос с "Race Conditions".
Также вопрос с загрузочными данными. Могут ли потоки одновременно считывать данные с одной и той же переменной?
По всем вопросам пишите в Telegram.