Почему нужно обязательно выучить Пайтон

Python — это мощный инструмент (для дома для семьи) для автоматизации рутинных задач, особенно когда речь идет о работе с большими объемами данных. В этом посте я хочу рассказать задачку от владельца магазина на WB.

Почему нужно обязательно выучить Пайтон Python, Автоматизация, Wildberries, Маркетплейс, Обработка данных, Microsoft Excel, База данных, Программирование, Технологии, Опыт, Warner Brothers, Длиннопост

Питон - "это не только ценный мех, но и...."

При реализации проекта автоматизации по обновлению цен и остатков на маркет плейсе WB (вайлдберриз), я столкнулся с задачей: как связать базу данных артикулов продавца и поставщика, так как из общих полей было название продукта и совпадение было не полным, например: "НАД-5 STAR COSMETIC ЗУБН ПАСТ ОСНОВ НА ТРАВ С ЭКСТР НОНИ 25 гр-3 шт" и "5 STAR COSMETIC ЗУБНАЯ ПАСТА ОСНОВ НА ТРАВАХ С ЭКСТРАКТОМ НОНИ 25,0". В прайсе поставщика 30 тыс. артикулов, а у продавца 5.5 тыс. позиций и в ручную связывать артикулы это... И тут на сцену выходит Пайтон!

Представьте, что у вас есть два файла Excel: seller.xlsx и supplier.xlsx. В первом файле есть пустой столбец "Наименование поставщика", который необходимо заполнить значениями из столбца "Название" второго файла. Задача усложняется тем, что нужно найти максимально совпадающие значения по последовательности букв из столбца "Артикул продавца" в файле seller.xlsx. Поскольку позиций более 30 тысяч, важно максимально эффективно использовать оперативную память и многопоточность.

Бонусом, для менеджера магазина, стал файл эксель в котором можно использовать функцию ВПР, для автоматического проставления цен из прайса поставщика.

upd: немного кода

Почему нужно обязательно выучить Пайтон Python, Автоматизация, Wildberries, Маркетплейс, Обработка данных, Microsoft Excel, База данных, Программирование, Технологии, Опыт, Warner Brothers, Длиннопост

Код оптимизирован для выполнения несколькими потоками с помощью ProcessPoolExecutor, что позволяет параллельно обрабатывать строки и существенно снижает время выполнения задачи.

Мои сети - https://t.me/apicraft, https://www.youtube.com/@jspytop, http://apicraft.ru/

0
Автор поста оценил этот комментарий

как сделать чтобы нагрузка не на один поток была?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Код оптимизирован для выполнения несколькими потоками с помощью ProcessPoolExecutor, что позволяет параллельно обрабатывать строки и существенно снижает время выполнения задачи. Параллельная обработка также помогает эффективнее использовать многопроцессорные системы. Оптимизация памяти достигается за счёт минимизации дублируемых данных и постепенного заполнения списка результатов, что позволяет работать с большими объёмами данных без перегрузки памяти.

Иллюстрация к комментарию
показать ответы
0
DELETED
Автор поста оценил этот комментарий

java, php, с++ обладают такими же свойствами.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Тут уж каким инструментом владеешь тем и пользуешься. Для моих задач питона и js за глаза, их бы хорошо "выучить"

0
DELETED
Автор поста оценил этот комментарий

Простите, среди топ-20 яп есть хоть один, который не может обрабатывать данные и файлы? Не берем во внимание что-то типа sql.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Опять же поддержка языка в gpt, попробовал перенести на rust (я его не знаю) - одни ошибки при компиляции. Опять же кросс платформенность тоже большой плюс для js, python

показать ответы
0
DELETED
Автор поста оценил этот комментарий

Простите, среди топ-20 яп есть хоть один, который не может обрабатывать данные и файлы? Не берем во внимание что-то типа sql.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Хороший вопрос, но инструментарий (надо не только файл "открыть" но и подходящий алгоритм обработки выбрать) у питона как правило самый разнообразный и если время не имеет решающего значения - питон надёжнее. А так было-бы интересно сравнить в похожей задаче с rust и go...

0
DELETED
Автор поста оценил этот комментарий

Чем пайтон для этой задачи лучше любого другого ЯП?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Наличием библиотек для обработки данных и файлов

показать ответы
0
Автор поста оценил этот комментарий

А эластик не подойдёт?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Может быть, вариантов в программировании всегда несколько.

0
Автор поста оценил этот комментарий

важно максимально эффективно использовать оперативную память и многопоточность

Как в python максимально эффективно использовать оперативную память и многопоточность? Просто интересно.
Вот с памятью есть вроде cyton. А как быть с многопоточностью?
EventLoop крутиться только в одном потоке. И асинхроность не есть многопоточность.
Да и пайтон не для этого. Пайтон нужен что-бы быстро писать

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Согласен, в этой задаче и час можно подождать. 4 варианта кода пробовал - все не быстрые

0
Автор поста оценил этот комментарий

важно максимально эффективно использовать оперативную память и многопоточность

Как в python максимально эффективно использовать оперативную память и многопоточность? Просто интересно.
Вот с памятью есть вроде cyton. А как быть с многопоточностью?
EventLoop крутиться только в одном потоке. И асинхроность не есть многопоточность.
Да и пайтон не для этого. Пайтон нужен что-бы быстро писать

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Чтобы нагрузка не на один поток была, а на все или количество воркеров выставлять

показать ответы
0
Автор поста оценил этот комментарий
ВПР таки довольно примитивна для такой задачи . Ищет точные совпадения.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

ВПР это уже менеджер использует, т.к. после обработки двух файлов получили "связанный файл продавец-поставщик" где уже было точное вхождение

2
Автор поста оценил этот комментарий

И все? И как ты решил эту задачу? Какой паттерн для регулярки написал? Как конкретно тебе питон помог?

раскрыть ветку (1)
Автор поста оценил этот комментарий

а помог в этом проекте Мой первый api проект для WB

2
Автор поста оценил этот комментарий

И все? И как ты решил эту задачу? Какой паттерн для регулярки написал? Как конкретно тебе питон помог?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Регулярка здесь не подойдет, т.к. не факт, что отличия только в начале артикула и конце... Вообще я написал промт и gpt со второго раза выдала нужный результат с использованием pandas и fuzzywuzzy