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

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
Автор поста оценил этот комментарий

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

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

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

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

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

Хотя я посмотрел. Cython не совсем эффективно использует память https://pythonhint.com/post/1075407413355478/cython-vs-c-per...

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

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

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

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

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

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

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

Ага увидел. Вот еще нашел статью https://superfastpython.com/processpoolexecutor-in-python/
И это в скриптовом языке.
Хотел написать что многопоточность в питоне нонсенс как в js. Но даже там нашел такое для node.js

Иллюстрация к комментарию
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку