@spbpython

Страница 679 из 785
Nikolay
26.02.2018
23:15:24
спасибо) посмотрю
оно по памяти не особо эффективно, к сожалению. Возможно, у Сергея правильнее, но я в его код не вникал

Serge
27.02.2018
07:43:03
А кто эту задачу придумал? Я вижу тут один шаг, который делает решение тривиальным.

Google
Sergey
27.02.2018
10:39:04
А кто-нибудь чего-нибудь может рассказать про GeekBrains? У меня тут знакомый намылился к ним сюда: https://geekbrains.ru/professions/python_developer Фантик красивый, а как оно там внутри — непонятно?

Олег
27.02.2018
10:47:36
Насильно учить не будут.

Sergey
27.02.2018
10:49:20
Это, конечно, хорошо, но так себе качественная оценка :D

Олег
27.02.2018
10:51:16
Из личного опыта. С нуля базу поднимают. Задуматься дают. Много, конечно приходится гуглить. Но выделяются наставники и группе вроде как есть сильные и подкованные коллеги, которые направят и подскажут.

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

В организационном плане, во многом идут на уступки студентам.

Из того что может расстроить - требуется много времени для выполнения ДЗ (ДЗ не обязательно к выполнению) они местами очень сложные для новичка.

Sergey
27.02.2018
10:57:14
Окей, спасибо!

Sergey
27.02.2018
11:05:02
Питон же достаточно простой, чтобы его освоить самостоятельно, зачем нужны курсы?
Чуваку нужна мотивация, он на год почти растянул курс на степике

А тут денег платить надо

Некто
27.02.2018
11:33:47
Может ему и питон тогда на самом деле не нужен?

Google
Некто
27.02.2018
11:34:03
Странно что-то учить, если нет мотивации личной

Sergey
27.02.2018
11:34:34
?‍♂️

Danil
27.02.2018
11:42:02
Регистрация на ITGM открыта: http://piter-united.ru/event/cje306m4g69or0132wphzlzqm/ Это большой слёт всех айтишных сообществ петербурга, проходящий пару раз в год. Мы там тоже будем с разными докладами про Python, разработку и сообщества. Спешите, места обычно очень резво заканчиваются.

Олег
27.02.2018
11:43:20
Загадочный митап

Dmitry
27.02.2018
11:43:48
почему?)

Dmitry
27.02.2018
11:44:13
типа то что без программы?)

Олег
27.02.2018
11:44:14
В программе пусто, а название ни о чем не говорит

Dmitry
27.02.2018
11:44:36
))

вот немного описания https://vk.com/wall-158437359_17

Dmitry
27.02.2018
11:44:59
Dmitry
27.02.2018
11:45:26
а программы нету потому что так устроены их процессы, к сожалению

Некто
27.02.2018
11:49:19
Эх, в отпуске буду 17го

Maxim
27.02.2018
11:57:43
народ, такой вопрос. в чем разница между logger.info(f'foo is {foo}') и logger.info('foo is %s', foo) ?

и есть ли какой-то смысл писать по второму варианту

Maxim
27.02.2018
11:58:41
ну а кроме очевидного? =) я пишу на 3.6 only сейчас

Sergey
27.02.2018
11:59:14
dis можно посмотреть, там для f-строк какие-то модные опкоды свои

Google
Maxim
27.02.2018
11:59:28
да причем тут f-строки

Dmitry
27.02.2018
11:59:35
второй быстрее) хотя тут хз. logger много всего делает чтобы прокинуть args

Maxim
27.02.2018
11:59:51
ну а если я бы спросил про logger.info('foo is %s' % foo) и logger.info('foo is %s', foo)?

Sergey
27.02.2018
12:01:35
ну а кроме очевидного? =) я пишу на 3.6 only сейчас
Второй лучше, форматирование строки не должно выполняться на более высоком уровне логирования

Dmitry
27.02.2018
12:02:24
я бы писал logger.info('foo is %s' % foo)

Sergey
27.02.2018
12:03:49
почему не должно?
зачем, если вывода в лог не будет?

Maxim
27.02.2018
12:04:07
зачем мне тащить ссылку на объект куда-то далеко в хендлеры и форматтеры, если я могу сделать все на месте и, грубо говоря, отдать ее гц тут же

ну при условии что у меня там тяжелый объект конечно

что вряд ли

еще меня очень интересует, есть ли у postgresql/aiopg какой-нибудь "поточный" режим? есть запрос, который работает скажем 20 секунд и генерирует тонну строк, но каждая отдельная строка генерируется достаточно быстро можно из питона начать получать строки до того, как бд сгенерировала их все? или может это именно так и работает по-умолчанию? :)

Sergey
27.02.2018
12:12:28
зачем мне тащить ссылку на объект куда-то далеко в хендлеры и форматтеры, если я могу сделать все на месте и, грубо говоря, отдать ее гц тут же
куда далеко? дальше этого if никуда не должно уходить if self.isEnabledFor(DEBUG): https://hg.python.org/cpython/file/default/Lib/logging/__init__.py#l1293 форматирование скорее всего дороже обойдется

Marco
27.02.2018
12:31:10
там distinct, он разве будет нормально с limit/offset работать?
Переписать запрос, оптимизировать структуру базы. Запросы по 20 секунд - это нездоровая тема.

Maxim
27.02.2018
12:34:06
ну хорошо, вот у меня конкретный пример есть таблица users, в ней поле counters. в таблице около 5-6 млн строк мне надо выбрать ид юзеров, у которых counters is null, и для каждого ид что-то сделать на стороне питона

Google
Maxim
27.02.2018
12:34:14
думаешь такой запрос будет быстро работать?

ну хотя тут как раз можно limit/offset

Serge
27.02.2018
12:35:33
В программе пусто, а название ни о чем не говорит
ну, в Питере ITGM уже все знают, а кто не знает, тому рекомендую идти. программа будет около 1 марта. все сообщества под эту дату готовятся

Maxim
27.02.2018
12:36:57
Counters это text, индекс по нему кажется странным делать, учитывая что искать по тексту мне не надо

Marco
27.02.2018
12:37:10
ну хорошо, вот у меня конкретный пример есть таблица users, в ней поле counters. в таблице около 5-6 млн строк мне надо выбрать ид юзеров, у которых counters is null, и для каждого ид что-то сделать на стороне питона
Ключевые слова - нормализация / денормализация. Иногда существенного повышения производительности можно добиться за счёт избыточной информации.

Marco
27.02.2018
12:39:09
ну хорошо, вот у меня конкретный пример есть таблица users, в ней поле counters. в таблице около 5-6 млн строк мне надо выбрать ид юзеров, у которых counters is null, и для каждого ид что-то сделать на стороне питона
"выбрать ид юзеров, у которых counters is null, и для каждого ид что-то сделать на стороне питон" - брать диапазоны пользователей, отсортированных по id, обрабатывать. В чём проблема?

Ruslan
27.02.2018
12:39:10
я такое делал года 3 назад на таблице тоже около 5 млн

Maxim
27.02.2018
12:39:13
Так я и хочу чтобы драйвер бд за меня на чанки бил и итератор давал)

Marco
27.02.2018
12:40:33
Так я и хочу чтобы драйвер бд за меня на чанки бил и итератор давал)
Курсоры. Но зачем нагружать базу тяжёлыми запросами, если можно последовательно запустить несколько лёгких?

https://www.postgresql.org/docs/9.2/static/plpgsql-cursors.html

Maxim
27.02.2018
12:41:25
А почему нет, если базу никто не трогает все равно?

Marco
27.02.2018
12:42:28
А почему нет, если базу никто не трогает все равно?
потому что большие запросы требуют много памяти, например

Sergey
27.02.2018
12:43:40
Так я и хочу чтобы драйвер бд за меня на чанки бил и итератор давал)
Тут посмотри https://bitbucket.org/zzzeek/sqlalchemy/wiki/UsageRecipes/WindowedRangeQuery

Marco
27.02.2018
12:46:29
А почему нет, если базу никто не трогает все равно?
Зачем нужна поточная обработка, если файл можно целиком считать в память? И пофиг что он может весить несколько гигабайт, оперативки сейчас везде много. </sarcasm>

Nikolay
27.02.2018
12:49:49
компромисс между скоростью и памятью
А как же поблочное чтение чанками?

Или mmap?

Google
Dmitriy
27.02.2018
12:50:44
А как же поблочное чтение чанками?
ну тоже вариант. но это из серии поточной обработки

Marco
27.02.2018
12:50:59
компромисс между скоростью и памятью
Файловый кэш неплохо с этим справляется. А фризы на время загрузки/выгрузки многократно перекрывают возможную выгоду.

Чанки - вот это разумный компромисс.

Dmitriy
27.02.2018
12:53:33
Файловый кэш неплохо с этим справляется. А фризы на время загрузки/выгрузки многократно перекрывают возможную выгоду.
если ssd и память нормальная, то можно и выгрузить целиком. Но вот чанкование, кстати, реально варик

Roman
27.02.2018
12:57:46
Или mmap?
для работы с бд?

Nikolay
27.02.2018
12:58:06
для работы с бд?
Бывают и такие бд

Nikolay
27.02.2018
12:59:16
например?
LMDB, если я не путаю ничего

Да даже Berkeleybd умеет в такое, вроде

Roman
27.02.2018
13:00:33
LMDB, если я не путаю ничего
угу. ты работал с ней? )

Nikolay
27.02.2018
13:00:54
угу. ты работал с ней? )
Плотно нет, но ты просил пример

Maxim
27.02.2018
13:05:27
зачем? чем тебе штатный курсор не устроил?
разве штатный курсор не заставит БД сначала сохранить все 5 млн строк в своей памяти, а потом отдавать по чуть-чуть?

а что именно лежит в counters?
строка :) внутреннее содержание которой не важно, я должен для каждого ид получить эту строку из внешнего сервиса и потом положить в бд

5-6 млн это может и не так много, но я не привык с такими объемами данных работать

пока что :)

Andrey
27.02.2018
13:07:37
ну хотя тут как раз можно limit/offset
с offset с условиями надо аккуратно, может он при каждом следующем запросе будет заново все предыдущие строки сначала обходить, чтобы ровно нужное количество пропустить

Страница 679 из 785