Νικήτας
Что то типо стажировки
Νικήτας
За 200км катать такое себе
Alex
Чешский офис редхата в Брно, если что.
в Праге сидят сейлзы и тренинговый центр.
averlor
Доброго времени суток! Нуждаюсь в помощи: Задача: Имеется массив заявок. Необходимо выбрать те из них, которые содержат ключевые слова. Реализация: https://github.com/averlor/question_p... Вопрос: Сейчас сверка заявок с ключевыми словами реализуется через двойной цикл. Время работы алгоритма O(n*n): ~0:00:00.006270. Можно ли организовать проверку алгоритмом, который работает быстрее? Благодарю за внимание!
Alex
Можешь пример привести?
очевидно вот это https://github.com/averlor/question_python/blob/master/bot_v1.py
Anonymous
А что там М? Список ключ слов?
Anonymous
Если так то сложность уже линейная
Aidar
А что там М? Список ключ слов?
Длина проверяемого поля
averlor
404
кандидатов и на какие площадки. 6) У КЦ должна быть возможность отправить по базе недошедших на интервью сообщение через бот. "к сожалению, вы не пришли на интервью, вам еще интересна наша вакансия.... и тд. Цена вопроса и сроки выполнения? Спасибо)'} ] result = [] # driver = webdriver.Chrome(executable_path = r'C:\chromeDriver\chromedriver.exe') # driver.get('https://www.google.com/') # element = driver.find_element_by_css_selector('.hb2Smf') for request in request_arr: for word in keywords: if (word in request['description'].lower()): result.append(request) #element.click() print("Элементов в request_arr: {}\nЭлементов в result: {}\n".format(len(request_arr), len(result))) print(result) if name == '__main__': main() ```
Aidar
Вхождение не за бесплатно делается
Aidar
Да
Так ведь количество ключей постоянно
Aidar
Или нет?
Anonymous
Ну можно С обозначить не суть
Anonymous
С * Н = Н
Anonymous
Короче я предлагаю такое решение
Anonymous
Если в регекспы влезает то попробовать на них
Anonymous
Они оптимизированы расширением
averlor
Можешь пример привести?
https://github.com/averlor/question_python/blob/master/bot_v1.py
Anonymous
Уже как минимум избавляешься от питоновской логики
Anonymous
Линейный регексп работает почти не хуже сабстринг поиска
Tishka17
https://github.com/averlor/question_python/blob/master/bot_v1.py
А зачем ты для каждого ключевого слова делаешь append всего реквестса? Не достаточно один раз?
averlor
А зачем ты для каждого ключевого слова делаешь append всего реквестса? Не достаточно один раз?
там мне ж каждую заявку, что соответствует ключевому слову нужно добавить
Tishka17
там мне ж каждую заявку, что соответствует ключевому слову нужно добавить
Если заявка соответствует нескольким словам, сколько раз ее надо добавить?
Tishka17
И я вижу там селениум, это будет с ним использоваться?
averlor
А что, скорости не хватает?
скорость неплохая, но хотел избавиться от двойного цикла + если есть метод быстрее, то было бы хорошо его посмотреть. Ибо то, что я прислал - это небольшая часть ключевых слов и заявок
Anonymous
У тебя линейная сложность
Anonymous
Здесь не важен двойной цикл
Anonymous
Оптимизируй когда тормозить начнет
averlor
И я вижу там селениум, это будет с ним использоваться?
да, по поводу селениума тоже куча вопросов, но пока не могу грамотно сформулировать: вместе с селениумом и нажатием одной кнопки: у меня время выполнения возрастает до 6 секунд и это только для обработки 10 заявок
Tishka17
Так вот, не надо оптимизировать код, который не тормозит. Оптимизируй тот, который тормозит.
averlor
Ты в курсе про преждевременную оптимизацию?
да, знаю. Но дело в том, что такой момент настал: у меня больше 100 000 заявок)
Anonymous
6секунд это еще норм
Anonymous
Вебдрайвер может минуту стартовать
Tishka17
А. 6 на 10 норм
averlor
6секунд это еще норм
понимаю, но мне нужно быстрее 4 секунд - это критично)
Tishka17
понимаю, но мне нужно быстрее 4 секунд - это критично)
Только один способ: выкинуть селениум
averlor
Только один способ: выкинуть селениум
окей, тогда что можно использовать вместо него?
Anonymous
Может быть есть пуппетер-питон уже?
Tishka17
окей, тогда что можно использовать вместо него?
А откуда взялся селениум вообще?
Anonymous
Чето такое было в новостях не помню для какого языка
Проксимов
averlor
А откуда взялся селениум вообще?
из гугла) Давайте я полностью опишу задачу?
Anonymous
Да, с этого надо начинать
Anonymous
На будущее
averlor
Суть в чем: Имеется сайт, на него в большом потоке поступают заявки. Если в заявке имееются ключевые слова, то нужно эту заявку принять(нажать кнопку в браузере))
averlor
Так. Сайт не твой?
клиентский - но доступ к потрахам есть
Tishka17
клиентский - но доступ к потрахам есть
Тогда блин нахрен ты селениум взял
Νικήτας
bs4?
averlor
Тогда блин нахрен ты селениум взял
умные товарищи с форума подсказали, я посему и подумал, что так быстрее
Tishka17
клиентский - но доступ к потрахам есть
Разберись что делается на сайте по клику, сделай апишку. Причем которая не по одной заявке принимает, а пачками
Проксимов
bs4?
Обрабатывать на бэкенде?
Tishka17
bs4?
Снова плохие советы?
Νικήτας
Почему плохие? Быстрее же чем селениум
Tishka17
клиентский - но доступ к потрахам есть
Ну или можно прям в базу залезть (не очень хорошо, но иногда допустимо) и делать в ней то же, что делает сайт по клику на кнопке. Опять же не по одной, а пачками
Tishka17
Почему плохие? Быстрее же чем селениум
Потому что селениум тут вообще нахуй не нужен, как и bs4
averlor
окей, для общего развития: Если сайт не мой, то имеет ли место быть селениум?
Tishka17
Почему плохие? Быстрее же чем селениум
Если у тебя есть твой сайт и тебе надо добавить в него фичу, ты будешь через селениум?
Tishka17
окей, для общего развития: Если сайт не мой, то имеет ли место быть селениум?
Да. Но лучше прийти к владельцу сайта и договориться о нормальном решении
Νικήτας
Но это же не его сайт
Νικήτας
Только есть доступ
Tishka17
Сказал это сайт заказчика
averlor
и еще для общего развития: как все же можно заменить двойной цикл. Скажем в будущем возникнет необходимость
Tishka17
и еще для общего развития: как все же можно заменить двойной цикл. Скажем в будущем возникнет необходимость
У тебя цикл по разным вещам. Ничем не заменить. Можно попробовать магию с регулярками, но там по сути почти такой же цикл будет внутри либы. Это может дать небольшое ускорение
Νικήτας
Ты про двойную итерацию фор?
averlor
Понял, благодарю за помощь)
Vitalii
Подкажите, как в цикле обращаться к разным переменным? К примеру мне нужно выполнить одинаковые действия с переменными ST1, ST2, ST3