Evgeniy
Т.е. выполнять код файла только один раз, если ранее не была определена константа
koder
кроме совсем печальных случаев, если ты обманешь код импорта и тот же самый модуль проимпортируешь дважды под разными именами
koder
вот тогда будет задница
Dmytro
Несколько разных источников утверждают, что абсолютные импорты работать будут.
Если повезёт - все будет работать. Не повезет - не будет работать. Сделайте отдельный проект, и попробуйте, чего уж.
koder
через as переименовать, имеешь в виду?
нет, я уже не помню точно как у меня получалось, но что-то в духе один раз абсолютно один относительно или типа того. В итоге получается два отдельных инстанса этого модуля, каждый со своим одинаковым на вид контентом, но сразными id
koder
import x as c - к этой проблеме не приводит
Victor
Нужно создать чат-бота, который бы реагировал на определённую команду в чате, а также каждые N секунд проверял кое-что (обращался к определённому серверу) и при удаче писал бы в этот же чат. Вопрос: как правильно организовать параллельное выполнение кода (в первом потоке проверка сообщений в чате на наличие команды, а во втором - обращение к серверу с определённым интервалом)? Смотрел модуль threads - вроде бы, это не то, что нужно.
koder
в sys.modules модуль заносится по родному имени, а не по переименованному
koder
А это имеет смысл? В питоне же gil?
gil не мешает работать таким потокам
koder
он совсем не про то
Victor
А это имеет смысл? В питоне же gil?
Имеет, потому что задача: по команде отдавать пользователям линк на программу, а по временному интервалу - проверять наличие обновлений этой же программы на другом сервере.
Anonymous
gil не мешает работать таким потокам
А для чего потоки при gil? Логическое разделение?
koder
А для чего потоки при gil? Логическое разделение?
потоки могут параллельно ждать данных от блокирующих операций
Victor
в зависимости от требований это можно и в одном потоке реализовать или через async еще
Это было бы интересно, но проблема в том, что используется библиотека vk_api и специальный цикл for, обрабатывающий события LongPoll-сервера ВКонтакте.
Anonymous
потоки могут параллельно ждать данных от блокирующих операций
А, интересно, тогда имеет смысл. А asyncio только неблокирующим io пользуется или держит пул для блок операций?
koder
Имеет, потому что задача: по команде отдавать пользователям линк на программу, а по временному интервалу - проверять наличие обновлений этой же программы на другом сервере.
в одном потоке по таймауту пулишь сервер и записываешь в шареную переменную url последней версии. Во втором потоке работаешь с чатом и используешь эту переменную для сообщений. Вообще-то лучше сделать на очередях и не шарить переменные, но это сложнее для начала
koder
А, интересно, тогда имеет смысл. А asyncio только неблокирующим io пользуется или держит пул для блок операций?
блокирующие async сам разруливает, если поддерживает. Если нет или нужно что-то долго считать - есть поддержка офлоадинга работы в пул потоков
koder
если сервер отвечает быстро - то можно все в одном потоке. Есть модуль https://docs.python.org/3/library/sched.html
koder
@Homo_Versutus ^
Victor
Спасибо, вот это уже очень интересно.
koder
делаешь одну ф-цию для чатика, одну для пулинга и запускаешь их в одном шедулере. Точно так же шаришь переменную с url. Но нужно аккуратно прописать таймауты общения с сервером
Victor
Сторонний сервер просто возвращает версию программы по запросу. Я её сравниваю с текущей (хранится в переменной). А сервер VK пулится. Понял, спасибо ещё раз.
Anonymous
http://prntscr.com/o2oblf
Anonymous
http://prntscr.com/o2obs7
Anonymous
что не так?
Anonymous
если использовать цикл, то получаю эту ошибку
Кіт ✙
http://prntscr.com/o2obs7
если у тебя рантайм в питоне, то боюсь представить, что будет на обычнм С или даже на С++
Кіт ✙
остальные поймут
Anonymous
вроде делаю как тут
Anonymous
http://prntscr.com/o2odge
Anonymous
остальные поймут
а ты мне обьясни? я же задал вопрос
Anonymous
или скажи что не знаешь о чем говоришь сам))
Vladyslav 🇺🇦🇪🇺
парни какой то гениальный разраб воткнул в значение key/value два разных типа данных. данные всего динамические. имеют вот такой вид {'highestBid': 0.0000102100000014 EPICA.BTC/EPICA.HULI} как можно нормально распарсить такое значение? по количеству символов не получится, данные динамичские по строковым ключам тоже. бывают не удачные повторения одного и того же
Vladyslav 🇺🇦🇪🇺
как распарсить вот это 0.0000102100000014 EPICA.BTC/EPICA.HUL ?
Vladyslav 🇺🇦🇪🇺
если получить по итогу нужно только строковое значение - EPICA.BTC/EPICA.HUL
Vladyslav 🇺🇦🇪🇺
хоть какоие нибудь идеи есть?
Vladyslav 🇺🇦🇪🇺
самое костыльное что пришло в голову, взять строковые цифры 0-9 и тупо через re.sub срезать
Vladyslav 🇺🇦🇪🇺
👑OGURCHIK🖤
по прабелу
👑OGURCHIK🖤
и бери вторую часть
👑OGURCHIK🖤
не?
Vladyslav 🇺🇦🇪🇺
через re?
Andrey
через re?
.split(" ")
Vladyslav 🇺🇦🇪🇺
годится, спасибо
Vladyslav 🇺🇦🇪🇺
❤️
Anonymous
Anonymous
Столько правды о закулисьях работы трейдеров еще никто не расскрывал, до завтра есть доступ @SECRETInvestFond
nzjdMFpV
Ребят, кто не спит, а поясните за классический idle, который поставляется вместе с питоном? Зачем вам что-то помимо него?
nzjdMFpV
Да, есть куча других удобных ide для разработчиков, но типа лол, idle же лёгкий, поставляется из коробки и прекрасно работает. В некоторых кругах его даже откровенно поносят
SetazeR
Да, есть куча других удобных ide для разработчиков, но типа лол, idle же лёгкий, поставляется из коробки и прекрасно работает. В некоторых кругах его даже откровенно поносят
"Ребят, кто не спит, а поясните за ложку, которая у всех есть? Зачем вам что-то помимо неё. Да, есть лопыты, экскаваторы, но типа ложка же лёгкая, у всех есть и ей прекрасно можно копать ямы. В некоторых кргуах её откровенно поносят"
SetazeR
Смекаешь?
SetazeR
Сомневаюсь что если ты пишешь что-то сложнее хелловорлда тебе будет idle хватать
Andrey
Ребят, кто не спит, а поясните за классический idle, который поставляется вместе с питоном? Зачем вам что-то помимо него?
установил и пожалел. С тем же успехом можно в vim всё делать или вообще в консоли. Нахрен этот idle нужен?
nzjdMFpV
Я просто не понимаю как бы, может я что-то упустил в своей жизни, раз мне идлы хватает, может я разработчик херовый
Andrey
Я просто не понимаю как бы, может я что-то упустил в своей жизни, раз мне идлы хватает, может я разработчик херовый
ну смотри. Открываешь Pycharm, создаёшь новый проект, он тебе сразу venv заводит, сам, показывает структуру в отдельном окошке, привязываешь гитхаб, например. дебаг встроенный. можно добавить несколько интерпретаторов и быстро между ними переключаться. Ну и куча неочевидных фич, вроде как зажимаешь контрол и кликаешь на метод и попадаешь в исходный код.
Andrey
и там миллиард других удобных фич, которые нужно только откопать и можно юзать
Andrey
Я просто не понимаю как бы, может я что-то упустил в своей жизни, раз мне идлы хватает, может я разработчик херовый
вот недавно открыл для себя ctrl + / - позволяет комментить кучу строк разом и раскомменчивать обратно
Andrey
блок кода можно подвинуть влево или вправо на таб просто табом
Андрей
Кто что использует для написания swagger doc на стеке flask-marshmello
Андрей
flasgger требует наследовать схемы от себя
Дивопсина сутулая породистая
Салют всем, ребят не подскажете такой момент есть файлик 55 гиг весом хочу читать например по 1024 строки в нем проводить манипуляюцию ,записывать результат а потом брать следующие 1024 строчки из этого же файлика, как правильно реализовать?
Tishka17
Да в общем, просто читай и норм
Дивопсина сутулая породистая
памяти не хватает
maxlunar
памяти не хватает
неправильно делаешь что-то значит
maxlunar
читай построчно
do not import flask
Вроде так
Tishka17
памяти не хватает
Не читай всё. Читай по строкам