@ru_python

Страница 8527 из 9768
Александр
27.03.2019
14:57:19




Stas
27.03.2019
14:59:52
а можно как то в генераторах списков

добавлять только уникальные значения?

Google
Stas
27.03.2019
15:00:04
тоесть если оно уже есть в списке не добавлять?

чтоб в сет его потом не переделывать например

[<PLAYER>]_
27.03.2019
15:04:03
?

LighteR
27.03.2019
15:05:11
добавлять только уникальные значения?
это не очень хорошая идея, в каждой итерации будет поиск по списку, который O(n)

Stas
27.03.2019
15:05:42
это не очень хорошая идея, в каждой итерации будет поиск по списку, который O(n)
тоесть лучше в таком случае просто не использовать генератор

и перед append'ом проверять есть ли значение в списке

LighteR
27.03.2019
15:06:25
и перед append'ом проверять есть ли значение в списке
Ну я только что написал, что не надо проверять в каждой итерации. Это медленно будет

сделай сразу set и добавляй в него

операция set.add идемпотентная

Pavel
27.03.2019
15:06:59
сделай сразу set и добавляй в него
а если ему порядок важен? upd. хотя, он же сам в сет переделывает

Stas
27.03.2019
15:07:47
а если ему порядок важен? upd. хотя, он же сам в сет переделывает
да, порядок важен sorted для этого сета я так понимаю тоже потом лишнее будет

Pavel
27.03.2019
15:07:55
и бессмысленное

Google
Stas
27.03.2019
15:08:25
roles = [] for f in filtered: match = re.search(role_regexp, f) if match and match.group(2) not in roles: roles.append(match.group(2))

а in же проверяет не циклом

Pavel
27.03.2019
15:08:40
можно проиграть по памяти и держать вместе с листом сет. проверять вхождение в сет, добавлять. но стоит помнить, что худший кейс x in set в общем то тоже О(n) (хотя средневзвешенный таки О(1))

Stas
27.03.2019
15:08:59
понял

тобишь каждый in это поиск по списку

Pavel
27.03.2019
15:09:39
для списка - да

LighteR
27.03.2019
15:10:57
можно dict использовать и хранить значения в ключах

будет как set, только ordered

Azamat
27.03.2019
15:11:34
есть кто нибудь с Кавказа ?

LighteR
27.03.2019
15:11:53
будет как set, только ordered
но только в python >= 3.6

Mike
27.03.2019
15:12:47
Azamat
27.03.2019
15:14:15
а важно?
Мне интересно ))

Pavel
27.03.2019
15:14:41
но только в python >= 3.6
емнип это сайдэффект и никто не гарантировал, что так-будет-и-дальше

LighteR
27.03.2019
15:15:40
т.е. начиная с 3.7 это часть спеки языка

Stas
27.03.2019
15:16:56
ValueError: dictionary update sequence element #0 has length 1; 2 is required

не совсем понял о чем вы

:))

или как это сделать?

а понял

Google
Stas
27.03.2019
15:18:19
что он ordered стал

LighteR
27.03.2019
15:19:50
l = [9, 1, 5, 8, 3, 4, 9, 15, 8] {v: None for v in l}.keys() # [9, 1, 5, 8, 3, 4, 15]

Димон
27.03.2019
15:20:55
Привет. А кто-нибудь знает, как в Celery предотвратить создание огромного числа регулярных заданий, если сдох воркер?

Или может просто не celery для этого юзать?

LighteR
27.03.2019
15:21:56
Сожрало?
не понял вопрос

?
27.03.2019
15:22:22
не понял вопрос
Ну ты не все вывел

2 элемента потерял

Andrew
27.03.2019
15:22:58
LighteR
27.03.2019
15:23:01
Ну ты не все вывел
ты точно понимаешь что делает этот код?

?
27.03.2019
15:23:03
А

Я тупой

Димон
27.03.2019
15:23:39
использовать несколько воркеров? перезапускать сдохший?
Ну, так-то да. Но поскольку redis, как бэкенд, персистит данные, не очень корректное поведение - если сдох (не запустился) воркер, херачить нон-стопом тысячи задач.

В моём случае это поллинг API

Димон
27.03.2019
15:24:26
Ну, если бы это было что-то, не персистящее данные, можно было бы его рестартить перед стартом воркера

Andrew
27.03.2019
15:25:09
Ну, если бы это было что-то, не персистящее данные, можно было бы его рестартить перед стартом воркера
ничего не понял. В твоём случае задачи в редис складывает некий код. Твой. Почини или первое или второе

Google
Andrew
27.03.2019
15:25:53
Мой код тут не причём
Ага, а таски в редисе из воздуха берутся

Димон
27.03.2019
15:27:11
Переформулирую вопрос. В Celery есть понятие regular tasks. Есть task, который должен выполняться раз в n секунд. Если дохнет или не запустился почему-то воркер, то celerybeat будет пулять таски до опупения, а когда воркер запустится - они выполняются не раз в 5 секунд, а непрерывным циклом, пока не кончатся

Димон
27.03.2019
15:27:24
О, expire. Спасибо!

Andrew
27.03.2019
15:28:41
Отличный сервис. Генерирует таски которые самостоятельно экспирятся. Побольше бы таких. Может зима стала теплее

Andrew
27.03.2019
15:30:49
Именно то, что мне надо!
неработающий селери с неработающими тасками? Так просто можно вырубить его в сервисах

Димон
27.03.2019
15:31:08
Нет, селери, который не копит ненужные тысячи невыполненых регулярных тасков

Andrew
27.03.2019
15:31:35
т.е. воркер таки работает но иногда прилегает?

Димон
27.03.2019
15:32:17
т.е. воркер таки работает но иногда прилегает?
Я не знаю, я ещё не клал это в прод. И селери первый раз юзаю. Но факт, что если он приляжет, выполнять накопленные таски избыточно

И даже вредно: api может забанить

Andrew
27.03.2019
15:32:40
ок

Димон
27.03.2019
15:33:40
Я понимаю, что убивать не регулярные таски - это глупо. Потому что это может быть выполнение какого-то уникального задания. Но в моём случае это просто синхронизация данных. Каждый её запуск не будет отличаться от предыдущего

Димон
27.03.2019
15:35:26
можно ещё отключить retry
Да, тоже полезно, спасибо!

Khachatur
27.03.2019
15:41:41
Всем привет! Я с задачкой: Имеется многомерной массив типа nd.array (размерность от одного и выше). Пример многомерного массива с размерностью равным 3: array = [ [ [(1, 3), (4, 5)], [(7, 5), (6,3)] ], [ [(2, 7), (8, 5)], [(7, 3), (9,3)] ] ] Необходимо реализовать функцию, которая получая на вход массив выдаёт словарь словарей. Для примера выше словарь выглядит следующим образом: dict_array = {0: {0: {0:[1, 3], 1: [4, 5]}, 1: {0: [7, 5], 1: [6, 3]} }, 1: {0: {0:[2, 7], 1:[8, 5]}, 1: {0: [7, 3], 1: [9, 3] } } } Функция рекурсивная. Я уже пытался писать. За опорный случай принял, когда размерность массива равна нулю, возвращаю список значений. Функция должна на вход также принимать именованный параметр, хранящий в себе tuple координат. То есть выдавать словарь словарей по соответствующему срезу.

Andrew
27.03.2019
15:43:43
Tishka17
27.03.2019
15:52:40
Пайчарм? Покажи как создаешь экземпляр MamagerConfig. До последней версии чарм ругался на параметры родителя

Google
Tishka17
27.03.2019
15:56:03
Это спам?

Vladimir
27.03.2019
15:56:31
Ребят, а подскажите плиз, распознаю допустим из пдф в тхт, тем же pdfminer, в тхтшнике текст тупо плывет, особенно, если это информация табличная, как-то эту таблицу потом можно чем-то собрать в кучу? Или может есть что-то, чем это все реально вообще вытянуть?

Vladimir
27.03.2019
15:57:39
ну, мне надо именно чем-то в python )

тоесть, чтоб человек прикрепил пдф, а получил эксель )

Валентин
27.03.2019
15:58:20
Друзья, посоветуйте книжек интересных почитать. Можно что-то из разряда "Читый код" Мартина, можно на какие-то конкретные технологии не сильно специфичные (git/docker etc).

Tishka17
27.03.2019
15:58:49
Абби делает свою либу так-то, можно наверно поговорить с ними, хз правда цены

Vladimir
27.03.2019
15:59:34
да не, там не глобальный сервис, причем, формат документа который переводим, строго одинаковый

поэтому буду думать, как слепить своими силами ))) Ну, в любом случае спасибо )

Roman
27.03.2019
16:01:12
да не, там не глобальный сервис, причем, формат документа который переводим, строго одинаковый
Если формат одинаковый с точностью до пикселей, то можно настроить текстовое распознавание по сегментам листов и гнать, например, в CSV формат.

Vladimir
27.03.2019
16:01:33
там в тхт сам пдф перевожу, но выходит каша с форматированием

Dzmitry
27.03.2019
16:01:54
Ребят кто может дать совет ? Вопрос в том что есть знания python на поверхностном уровне(переменные, словари, кортежи, списки, циклы ) что можно почитать по python что бы его выучить на хорошем уровне , знаю Лутца посоветуете , но если другие книги хорошие , ибо Лутц в электронке только за 2011 год

Vladimir
27.03.2019
16:02:44
тоесть, в табличке отображает Имя: Владимир, Фамилия: Гуменюк, а в тхтшнике - Имя, Фамилия, Владимир, Гуменюк

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