@ru_python

Страница 8577 из 9768
Roman
31.03.2019
13:27:02
Я пишу библиотеку для фильтрации мата (https://github.com/rominf/profanity-filter). Работает не очень быстро (из-за того что глубоко копает): на моём i5 в однопоточном режиме - 150 слов в секунду. Хочу распараллелить. Причём так, чтобы можно было worker-ов запускать на разных машинах. Напрашивается task queue типа Celery. Только вот проблема в том, что мне надо, чтобы в worker-ах крутился экземпляр ProfanityFilter, а это МиБ 50 по памяти. Я хотел задачами делать проверку каждого слова. Передавать ProfanityFilter на каждую задачу - вообще не вариант. А Celery - stateless решение. Может ли кто-нибудь порекомендовать штуку типа Celery, но чтобы я сам писал код worker-ов и они были stateful. То есть я напишу в основном коде scheduler, который при создании ProfanityFilter запустит нужное количество worker-ов, вручит им экземпляры ProfanityFilter, а потом при запуске пользователем функции censor будет выдавать задачи и собирать? Ну или что-нибудь получше предложите, пожалуйста. Пробовал Celery и Dask - ничего хорошего не вышло.

Можно написать всё руками на ZeroMQ, к примеру, но как-то слишком низкоуровнево получается. Боюсь, что придётся кучу времени на левые вещи потратить из серии перезапуска worker-ов при их смерти.

Denis
31.03.2019
13:30:13
Kubernetes!

Roman
31.03.2019
13:31:47
Kubernetes!
Это мне? Мне кажется, что это из пушки по воробьям. У меня одна либа, зачем её в Docker пихать? Да и пользователю тоже Kubernetes поднимать? Это ж с ума сойдёшь.

Google
Tishka17
31.03.2019
13:38:48
наверное, я наследуюсь просто от QObject
Магия. Не работает. Пробовал разные параметры, разнае типы коннекта

Коннекшн при чем создаётся

Пробовал даже его сохранять

Andrew
31.03.2019
13:39:41
может имя переменной какойто совпадает из уже существующей переменной

Tishka17
31.03.2019
13:39:52
Да вряд ли

Andrew
31.03.2019
13:40:09
.
ты смотрел это ?

Tishka17
31.03.2019
13:40:54
есть минимальный пример?
Да тот же код пробую

Пойду попробую Pyside2

Alex
31.03.2019
13:42:55
ладно, убедили. попробую запустить

Tigran
31.03.2019
13:47:20
Это мне? Мне кажется, что это из пушки по воробьям. У меня одна либа, зачем её в Docker пихать? Да и пользователю тоже Kubernetes поднимать? Это ж с ума сойдёшь.
Ты же по факту хочешь stateful сервис. Kubernetes звучит как норм тема. И очереди не нужны, риалтаймовое решение

Roman
31.03.2019
13:54:27
Ты же по факту хочешь stateful сервис. Kubernetes звучит как норм тема. И очереди не нужны, риалтаймовое решение
Я хочу библиотеку, которую можно использовать вот так: pip install profanity-filter, потом поставить словари (а вообще планирую в будущем чтобы автоматом по необходимости устанавливались), потом: from profanity_filter import ProfanityFilter pf = ProfanityFilter(['ru', 'en']) pf.censor('Да это shit, блять!') # "Да это ****, *****!"И чтобы это работало на всех ядрах. Kubernetes позволит это сделать, а не заниматься подъёмом кластера час? Я полистал tutorial - мне кажется, что нет.

Alex
31.03.2019
13:54:53
эм.... смешались в кучу кони люди

Google
Roman
31.03.2019
13:56:35
эм.... смешались в кучу кони люди
Это мне? Если да, то можно по-подробнее?

Alex
31.03.2019
13:56:46
> И чтобы это работало на всех ядрах. так запусти пул процессов

Tishka17
31.03.2019
13:57:00
На Pyside2 работает аналогично

Andrew
31.03.2019
13:57:58
.
.

Alex
31.03.2019
13:58:24
На Pyside2 работает аналогично
дай плиз рабочий код

чтобы я щас с импортами не заморачивался.

Suren
31.03.2019
13:58:45
Лол

Tishka17
31.03.2019
13:59:06
Статик метод работает

дай плиз рабочий код
https://paste.ubuntu.com/p/zSpSm63kYX/

Roman
31.03.2019
14:00:01
Наверное, нужен ProcessPoolExecutor
Ок, а я смогу в него загнать при создании ProfanityFilter несколько копий на каждый процесс, потом text (при начале цензурирования) и только потом индексы? Пока я не очень представляю как это сделать.

Tishka17
31.03.2019
14:00:51
Спрашивается, как вообще должен работать коннект до метода класса, если у него первый аргмуент - инстанс

Roman
31.03.2019
14:02:09
Да, через очередь
Спасибо! Ну ОК, тогда может быть можно попробовать. Я правда хотел, чтобы оно масштабировалось на разные машины. Чтобы универсальнее было. Мало ли какие объёмы будут у пользователей... Предложений типа такого же, но с кластером не будет?

Denis
31.03.2019
14:02:29
А разные машины это уже кубер

И если у человека много машин, он готов потратить час на настройку кластера

Roman
31.03.2019
14:04:37
А разные машины это уже кубер
http://distributed.dask.org/en/latest/quickstart.html - dask умеет в несколько строчек. Только вот stateful в нём очень фигово реализован.

Alex
31.03.2019
14:04:44
кстати

Tishka17
31.03.2019
14:04:50
Ну в общем сделай просто в виде rest сервиса и выложи образ в докер

Кому надо поднимет кластер хоть в кубе, хоть в сварме, хоть в номаде

Google
Alex
31.03.2019
14:05:11
@Tishka17 а ничего что logic умирает при выходе из __init__?

Alex
31.03.2019
14:05:29
Я только щас заметил

ну да

self.logic = и все работает

Tishka17
31.03.2019
14:05:51
Да, в этом и дело

Лол

Alex
31.03.2019
14:06:18
но по-хорошему у этого объекта должен быть parent

Andrew
31.03.2019
14:08:55
спасибо парни , всег овам хорошего

Roman
31.03.2019
14:09:43
Ну в общем сделай просто в виде rest сервиса и выложи образ в докер
Ну, наверно, это самое универсальное решение. Буду думать в эту сторону. Никогда так не делал. Сколько запросов по несколько КиБ сможет один сервер обрабатывать? Хотя бы порядок?

Alex
31.03.2019
14:11:14
спасибо парни , всег овам хорошего
Я не знаю что ты пытаешься сделать, но по-хорошему у объектов в Qt должен быть либо parent либо ты сам должен контролировать их время жизни.

parent особенно нужен в плюсцах, чтобы Qt подчищала за собой дерево объектов автоматически.

Andrew
31.03.2019
14:14:12
а нет это нужно для @Pyqtslot

Alex
31.03.2019
14:15:19
угу, это нужно чтобы сигнал-слоты работали

несколько необычный подход, ну да ладно.

Google
Andrew
31.03.2019
14:16:39
Alex
31.03.2019
14:17:07
Хорошо бы бизнес-логику отвязывать от представления.

Тогда тебе не нужны сигнал-слоты на уровне бизнес-логики, только на уровне взаимодействия с UI.

Это в теории.

Roman
31.03.2019
14:23:27
Чот каша. Ты написал библиотеку, она работает. Всё. Можно разве что multiprocessing прикрутить (pls don’t). Кому не хватает скорости — тот пусть запускает на многих машинах за балансером. Можешь облегчить им жизнь, сделав докер-образ с микросервисом.
Спасибо за мысль. Я просто хотел сделать решение "всё в одном", но наверное, это действительно, не нужно. Наверное, так и поступлю. Единственное, что я хотел бы, чтобы можно было параллелить цензурирование одного текста. Элементарно цензурирование одной статьи (2200 токенов) на новостном портале занимает 15 секунд. Это очень много. Я хочу оптимизировать библиотеку, но вряд ли смогу сократить время до миллисекунд, потому что у меня библиотека позволяет находить сильно искажённые или сложно образованные матные слова. Очень быстро такого не сделать, хотя бы потому что проверка орфографии на больших текстах работает секунды, а у меня сложнее алгоритмы и проверка орфографии - лишь часть процесса. Если тупо сделать Docker образ с REST, то без дополнительного кода не получится параллелить цензурирование текста. Но, думаю, что распараллеливание цензурирования текста на уровне библиотеки можно будет уже поверх REST сделать.

Tigran
31.03.2019
14:24:37
Спасибо за мысль. Я просто хотел сделать решение "всё в одном", но наверное, это действительно, не нужно. Наверное, так и поступлю. Единственное, что я хотел бы, чтобы можно было параллелить цензурирование одного текста. Элементарно цензурирование одной статьи (2200 токенов) на новостном портале занимает 15 секунд. Это очень много. Я хочу оптимизировать библиотеку, но вряд ли смогу сократить время до миллисекунд, потому что у меня библиотека позволяет находить сильно искажённые или сложно образованные матные слова. Очень быстро такого не сделать, хотя бы потому что проверка орфографии на больших текстах работает секунды, а у меня сложнее алгоритмы и проверка орфографии - лишь часть процесса. Если тупо сделать Docker образ с REST, то без дополнительного кода не получится параллелить цензурирование текста. Но, думаю, что распараллеливание цензурирования текста на уровне библиотеки можно будет уже поверх REST сделать.
Да, кажется, что распилить текст на части клиенты могут до посылания тебе данных. Можешь предусмотреть для этого хелперок какой-нибудь.

Roman
31.03.2019
14:26:37
Да, кажется, что распилить текст на части клиенты могут до посылания тебе данных. Можешь предусмотреть для этого хелперок какой-нибудь.
Ну, наверное, да. С учётом того, что HTTP всё-таки достаточно тяжёлый протокол, имеет смысл пилить на примерно равные части и смириться с тем, что кто-то закончит раньше, чем параллелить по словам.

Всем спасибо за идеи! Что-то про то, чтобы реализовать через REST и запихнуть в контейнер, не подумал. Опыта не было по написанию микросервисов. Теперь должен появиться.

Des_
31.03.2019
14:50:43
Кто подскажет на чём пишут интерфейс для приложений? Я просто сомневаюсь что нормальные компании, как телеграм, пишут интерфейс на киви или PyQT

Dtttts
31.03.2019
14:51:31


Des_
31.03.2019
14:51:37
Они пишут не на питоне.
Ну это понятно, а на чём тогда?

ldm37?
31.03.2019
14:51:46
Что за ОС?

Dtttts
31.03.2019
14:51:59
Elementery OS

5 версия

Tigran
31.03.2019
14:52:13
Elementery OS
Да лучше бы ты уже описал свою проблему наконец

M
31.03.2019
14:52:24
Но, к слову, в телеге, как раз-таки, Qt

Витя
31.03.2019
14:52:25
Des_
31.03.2019
14:52:27
Ага, а то не трэйсбэка, ничего

Google
Des_
31.03.2019
14:52:44
Java, C#
Хорошо, понял, спасибо

Alex
31.03.2019
14:52:51
На разых тулкитах пишут, в том чилсе и на Qt.

Des_
31.03.2019
14:52:55
На разых тулкитах пишут, в том чилсе и на Qt.
Я пытался писать на чистом QT, я не видел ни одного адекватного интерфейса на нём

Максимум виджеты

Dtttts
31.03.2019
14:53:36
ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s)' at line 1

Да лучше бы ты уже описал свою проблему наконец

Alex
31.03.2019
14:53:41
То что ты не видел лишь говорит о твоем узком кругозоре.

Страница 8577 из 9768