@ru_python

Страница 9349 из 9768
Denis
16.06.2019
21:00:30
поставил только марку своей компании

я не видел

Pavel
16.06.2019
21:00:40
Denis
16.06.2019
21:01:03
заплатил, накатил, работает.
а, извините, я проприетарное не так истолковал

Google
Denis
16.06.2019
21:01:40
фул претрена короче я не видел, так чтобы просто веса модели скачал и все ок

много лет назад я видел проект по голосовому управлению с помощью чисто локальных либ. Но там предполагалось распознавание команд из ограниченного набора
на самом деле сейчас в популярных решениях типа сири или алисы набор тоже ограничен, правда явно шире чем в доисторических моделях сделано для того чтоб непонятных ситуаций поменьше было

BlackAndOrange
16.06.2019
21:21:19
Обнаружил, что pylint ругается на циклические импорты Модули лежат в одном пакете Импорты абсолютные (вроде from package.module import Class ) Отставив в сторону обсуждение, что циклические импорты плохи с точки зрения дизайна — что может пойти не так?

Tishka17
16.06.2019
21:23:36
Самое просто что может - код просто не будет работать

koder
16.06.2019
21:24:42
будет писать - ImportError - имя XXX не найдено в модуле YYY

ҠᏗℯዘ ℨℯᏗℯዘӹน
16.06.2019
21:25:15
Я эту проблему с циклическими импортами решал, делая импорт нужного файла не в самом верху файла, а в самой функции. Какие варианты поумнее можете посоветовать?

koder
16.06.2019
21:25:51
так что бы они оба зависели от вынесенного, но не друг от друга

polunin.ai???
16.06.2019
21:26:16
Можно переписать архитектуру полностью, чтобы один модуль не требовал другой.

ҠᏗℯዘ ℨℯᏗℯዘӹน
16.06.2019
21:26:17
А зачем что-то другое?
Показалось некрасивым такое решение, в лоб так сказать

BlackAndOrange
16.06.2019
21:26:40
Не может. Абсолютные импорты будут работать.

Google
polunin.ai???
16.06.2019
21:26:49
Показалось некрасивым такое решение, в лоб так сказать
Ну хз, я в книге видел такой импорт внизу, и чувак писал это нормально.

ҠᏗℯዘ ℨℯᏗℯዘӹน
16.06.2019
21:26:50
BlackAndOrange
16.06.2019
21:26:57
В модулях — схема реляционной базы данных.

Нет функций, только декларативные классы.

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

koder
16.06.2019
21:28:07
BlackAndOrange
16.06.2019
21:28:34
в базе циклические зависимости между таблицами?
В одну сторону зависимость, в другую backref

koder
16.06.2019
21:29:02
В одну сторону зависимость, в другую backref
слей все циклически зависимые в один файл

ҠᏗℯዘ ℨℯᏗℯዘӹน
16.06.2019
21:29:28
Ну хз, я в книге видел такой импорт внизу, и чувак писал это нормально.
А аналога ifdef из с++ в питоне нет? Чтобы guard'ы ставить?

BlackAndOrange
16.06.2019
21:29:35
Спасибо за идею. Пожалуй, воздержусь. С точки зрения дизайна мне это нравится и код прекрасно работает.

Остаётся вопрос только — почему pylint ругается-то?

Только из соображений дизайна?

koder
16.06.2019
21:30:00
ты смешной

тебе три раза написали, что код - говно

BlackAndOrange
16.06.2019
21:30:19
Спасибо за конструктив.

koder
16.06.2019
21:30:20
и может валится смотря как ты будешь его импортировать

BlackAndOrange
16.06.2019
21:30:32
«Как импортирую» я написал

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

Google
koder
16.06.2019
21:31:05
Пруф?
мне идти писать для тебя пример?

BlackAndOrange
16.06.2019
21:31:14
Нет, достаточно показать источник утверждения

koder
16.06.2019
21:31:18
не, сори, если тебе это нравится - пользуйся

источник мой опыт написания такого кода

ҠᏗℯዘ ℨℯᏗℯዘӹน
16.06.2019
21:32:32
Хз что это.
Пишешь ifdef "file.h" define "file.h". И endif в конце. Примерно так

koder
16.06.2019
21:33:15
модуль не будет импортироваться второй раз

ҠᏗℯዘ ℨℯᏗℯዘӹน
16.06.2019
21:33:24
Т.е. выполнять код файла только один раз, если ранее не была определена константа

koder
16.06.2019
21:34:07
кроме совсем печальных случаев, если ты обманешь код импорта и тот же самый модуль проимпортируешь дважды под разными именами

вот тогда будет задница

polunin.ai???
16.06.2019
21:35:31
Несколько разных источников утверждают, что абсолютные импорты работать будут.
Если повезёт - все будет работать. Не повезет - не будет работать. Сделайте отдельный проект, и попробуйте, чего уж.

koder
16.06.2019
21:37:19
через as переименовать, имеешь в виду?
нет, я уже не помню точно как у меня получалось, но что-то в духе один раз абсолютно один относительно или типа того. В итоге получается два отдельных инстанса этого модуля, каждый со своим одинаковым на вид контентом, но сразными id

import x as c - к этой проблеме не приводит

Виктор
16.06.2019
21:38:02
Нужно создать чат-бота, который бы реагировал на определённую команду в чате, а также каждые N секунд проверял кое-что (обращался к определённому серверу) и при удаче писал бы в этот же чат. Вопрос: как правильно организовать параллельное выполнение кода (в первом потоке проверка сообщений в чате на наличие команды, а во втором - обращение к серверу с определённым интервалом)? Смотрел модуль threads - вроде бы, это не то, что нужно.

koder
16.06.2019
21:38:07
в sys.modules модуль заносится по родному имени, а не по переименованному

Google
koder
16.06.2019
21:40:16
А это имеет смысл? В питоне же gil?
gil не мешает работать таким потокам

он совсем не про то

Виктор
16.06.2019
21:40:45
А это имеет смысл? В питоне же gil?
Имеет, потому что задача: по команде отдавать пользователям линк на программу, а по временному интервалу - проверять наличие обновлений этой же программы на другом сервере.

Human
16.06.2019
21:41:02
gil не мешает работать таким потокам
А для чего потоки при gil? Логическое разделение?

koder
16.06.2019
21:41:35
А для чего потоки при gil? Логическое разделение?
потоки могут параллельно ждать данных от блокирующих операций

Виктор
16.06.2019
21:42:43
в зависимости от требований это можно и в одном потоке реализовать или через async еще
Это было бы интересно, но проблема в том, что используется библиотека vk_api и специальный цикл for, обрабатывающий события LongPoll-сервера ВКонтакте.

Human
16.06.2019
21:42:48
потоки могут параллельно ждать данных от блокирующих операций
А, интересно, тогда имеет смысл. А asyncio только неблокирующим io пользуется или держит пул для блок операций?

koder
16.06.2019
21:42:51
Имеет, потому что задача: по команде отдавать пользователям линк на программу, а по временному интервалу - проверять наличие обновлений этой же программы на другом сервере.
в одном потоке по таймауту пулишь сервер и записываешь в шареную переменную url последней версии. Во втором потоке работаешь с чатом и используешь эту переменную для сообщений. Вообще-то лучше сделать на очередях и не шарить переменные, но это сложнее для начала

А, интересно, тогда имеет смысл. А asyncio только неблокирующим io пользуется или держит пул для блок операций?
блокирующие async сам разруливает, если поддерживает. Если нет или нужно что-то долго считать - есть поддержка офлоадинга работы в пул потоков

koder
16.06.2019
21:45:08
если сервер отвечает быстро - то можно все в одном потоке. Есть модуль https://docs.python.org/3/library/sched.html

@Homo_Versutus ^

Виктор
16.06.2019
21:45:47
Спасибо, вот это уже очень интересно.

koder
16.06.2019
21:46:26
делаешь одну ф-цию для чатика, одну для пулинга и запускаешь их в одном шедулере. Точно так же шаришь переменную с url. Но нужно аккуратно прописать таймауты общения с сервером

Виктор
16.06.2019
21:47:49
Сторонний сервер просто возвращает версию программы по запросу. Я её сравниваю с текущей (хранится в переменной). А сервер VK пулится. Понял, спасибо ещё раз.

Арип
16.06.2019
22:26:57
http://prntscr.com/o2oblf

http://prntscr.com/o2obs7

что не так?

если использовать цикл, то получаю эту ошибку

Google
Винни
16.06.2019
22:29:40
http://prntscr.com/o2obs7
если у тебя рантайм в питоне, то боюсь представить, что будет на обычнм С или даже на С++

Винни
16.06.2019
22:32:43
остальные поймут

Арип
16.06.2019
22:33:00
вроде делаю как тут

http://prntscr.com/o2odge

остальные поймут
а ты мне обьясни? я же задал вопрос

или скажи что не знаешь о чем говоришь сам))

Какого Бля
16.06.2019
22:41:27
парни какой то гениальный разраб воткнул в значение key/value два разных типа данных. данные всего динамические. имеют вот такой вид {'highestBid': 0.0000102100000014 EPICA.BTC/EPICA.HULI} как можно нормально распарсить такое значение? по количеству символов не получится, данные динамичские по строковым ключам тоже. бывают не удачные повторения одного и того же

как распарсить вот это 0.0000102100000014 EPICA.BTC/EPICA.HUL ?

если получить по итогу нужно только строковое значение - EPICA.BTC/EPICA.HUL

хоть какоие нибудь идеи есть?

самое костыльное что пришло в голову, взять строковые цифры 0-9 и тупо через re.sub срезать

Какого Бля
16.06.2019
22:47:21

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