
Yegor
15.12.2018
11:25:27
В общем мой мегацкрипт разбит на две части, первая дергает все ссылки на товар, вторая дергает по этим ссылкам данные товара.
Так вот, каждый раз первая часть скрипта дергает все больше и больше ссылок. Такое чувство что там на сайте кто-то херачит шопапакарла.
Пол тыщи, за пару суток...
В общем не верю.
Думаю может мой мегачкрипт случайно дубли ссылок добавляет?
Так вот, посоветуйте как максимально быстро найти в файле из 30К строк дубликаты
Или тут только цикл?

Aragaer
15.12.2018
11:27:20
так .. у меня уже эльфы и гоблины начали ходить и бить друг друга

Google

Aragaer
15.12.2018
11:30:52
елка сегодня шикарная

Сергей
15.12.2018
11:32:22
30К строк вполне можно загрузить во множество, оно очистит данные от дублей. Советую сначала просто считать строки, посчитав их, потом посмотреть на длину множества. Если они разные, то переписать их опять в файл из множества.

Tishka17
15.12.2018
11:37:39
а все тестовые проходят

Владимир
15.12.2018
11:38:03


Stefan
15.12.2018
11:39:09
парни привет
помогите разобраться новичку
дело вот в чем, вот функция:
=====================
import optparse
def getArguments():
parser = optparse.OptionParser()
parser.add_option("-i", "--interface", dest="interface", help="Choose interface <>")
parser.add_option("-m", "--masc", dest="new_mac", help="Mac adress <>")
(options, arguments) = parser.parse_args()
if not options.interface:
parser.error("[--->] Must choose interface, use --help ")
elif not options.new_mac:
parser.error("[--->] Must choose Mac adress, use --help ")
return (options.interface, options.new_mac)
=====================
я делаю прогу при запуске которой я даю 2 параметра, вот в таком формате:
prog.py -i vasea -m kolea
я хочу проверить есть ли аргументы, код функции выше
дальше я начинаю тестить, и вот что получается:
если я запускаю : " prog.py -i етх0 " -> то есть даю тока первый параметр и значение для него
то обрабатывается ошибка и выскакивает сообшение из моего огработчика parser.error( .... )
а если я запускаю : " prog.py -i " -> то есть вставляю имя параметра (у меня их 2: -i -m) но не даю значение для етого параметра ТО ошибка обрабатывается НО не появляется сообшение из моего огработчика parser.error( .... )
а мне надо что в случае запуска без параметров или запуск с параметром но без значения для параметра при обработки ошибки высвечивался текст ошибки из моего обработчика parser.error( .... )
может кто подсказать ка реализовать мне это ???


Tishka17
15.12.2018
11:39:52
https://asciinema.org/a/1h8guSh9ekybBe7GsUnvnNakD
парни привет
помогите разобраться новичку
дело вот в чем, вот функция:
=====================
import optparse
def getArguments():
parser = optparse.OptionParser()
parser.add_option("-i", "--interface", dest="interface", help="Choose interface <>")
parser.add_option("-m", "--masc", dest="new_mac", help="Mac adress <>")
(options, arguments) = parser.parse_args()
if not options.interface:
parser.error("[--->] Must choose interface, use --help ")
elif not options.new_mac:
parser.error("[--->] Must choose Mac adress, use --help ")
return (options.interface, options.new_mac)
=====================
я делаю прогу при запуске которой я даю 2 параметра, вот в таком формате:
prog.py -i vasea -m kolea
я хочу проверить есть ли аргументы, код функции выше
дальше я начинаю тестить, и вот что получается:
если я запускаю : " prog.py -i етх0 " -> то есть даю тока первый параметр и значение для него
то обрабатывается ошибка и выскакивает сообшение из моего огработчика parser.error( .... )
а если я запускаю : " prog.py -i " -> то есть вставляю имя параметра (у меня их 2: -i -m) но не даю значение для етого параметра ТО ошибка обрабатывается НО не появляется сообшение из моего огработчика parser.error( .... )
а мне надо что в случае запуска без параметров или запуск с параметром но без значения для параметра при обработки ошибки высвечивался текст ошибки из моего обработчика parser.error( .... )
может кто подсказать ка реализовать мне это ???
да не юзай ты optparse
сказали же
есть argparse


Stefan
15.12.2018
11:41:45

fickle asshole
15.12.2018
11:50:41
ссори за меме

Google

fickle asshole
15.12.2018
11:50:59
но это смешно

Yegor
15.12.2018
11:56:28
множество == список?

Aragaer
15.12.2018
11:57:24
или еще на чем-то

Tishka17
15.12.2018
11:58:27

Aragaer
15.12.2018
11:59:18
достижимые ищу волной, просто я до сих пор не сталкивался с ситуацией, когда достижимых нет. У меня волна очень ... на коленке сляпана

Tishka17
15.12.2018
11:59:33
Ну у меня тоже на коленке :))
Так они друг друга загораживабт

Aragaer
15.12.2018
12:01:36
угу
ну я только сейчас с таким столкнулся 8)
мхм
ок, обратная волна чот поломалась

Tishka17
15.12.2018
12:03:48
А я без обратной волны сделал. Но вроде должно пофиг быть

Aragaer
15.12.2018
12:04:13
там есть разница, через какую траекторию он пойдет

Vadik
15.12.2018
12:04:35
Всем привет. Помогите разобраться с авторизацией на сайте, при помощи библиотеки requests. Почему при входе в аккаунт через requests, coookies отличаются от тех, которые сохраняются в браузере ? Не хватет параметра data который содержит hashcode. Или hashcode генерируется скриптом в браузере и отсылается на сервер?

Сергей
15.12.2018
12:04:56

Yegor
15.12.2018
12:05:58

Tishka17
15.12.2018
12:06:47

Aragaer
15.12.2018
12:07:05
ы, блин, у меня волновой поиск ломается когда на первой же волне цель достигнута 8)

Google

Tishka17
15.12.2018
12:07:21


Vadim
15.12.2018
12:08:46
Привет.
Ребят, посоветуйте решение.
Есть задача сделать обработчик файлов, который получает файлы по http, асинхронно их обрабатывает и отдает результат.
Дано:
1. Файл обрабатывается за 20-40сек.
2. Файлы будут загружаться по http пачками в 100-1000 файлов.
3. api сделано на flask и хочется на нем и остаться.
4. python 3.7
Первоначально думал сделать через celery + rabbitmq (но я не знаю насколько тяжело rabbit поддерживать в prod).
Пока планирую сделать 3 части:
1. база на postgresql, в ней же будет очередь задач.
2. api на flask которое будет принимать файлы, укладывать их на диск и ставить задачу в postgresql.
3. обработчик, который собственно будет обрабатывать файлы (хочется иметь возможность разнести его на другой сервер и поднимать несколько инстансов). Думаю api к нему тоже сделать на flask по http, чтобы была возможность разнести на разные сервера.
Вопрсосы:
1. Как запускать обработчик? Инициировать с приложения 1? И говорить ему "работая, очередь не пуста".
2. Как хранить файлы? Просто на диске? Или же создавать какой-либо файлообменник?
3. Хочу все завернуть в docker контейнеры. под python часть хочу вот этот взять - https://hub.docker.com/r/tiangolo/uwsgi-nginx-flask/. под postgresql - https://hub.docker.com/_/postgres/
Как вы считаете, есть ли здесь здравый смысл?)


Tishka17
15.12.2018
12:09:18

Aragaer
15.12.2018
12:09:35
во, чот дальше зашуршало

Сергей
15.12.2018
12:10:32
Спасибо. Зачем символ "_"???
Это все от лени, list - зарезервированное слово, его не стоит использовать в качестве переменной, мне лень было придумывать имя для переменной, достаточно поставить знак подчеркивания перед list и это уже другое слово. Кроме того, в питоне есть соглашение, если переменная начинается с _, то она используется для внутренних целей.


Tishka17
15.12.2018
12:10:34
Привет.
Ребят, посоветуйте решение.
Есть задача сделать обработчик файлов, который получает файлы по http, асинхронно их обрабатывает и отдает результат.
Дано:
1. Файл обрабатывается за 20-40сек.
2. Файлы будут загружаться по http пачками в 100-1000 файлов.
3. api сделано на flask и хочется на нем и остаться.
4. python 3.7
Первоначально думал сделать через celery + rabbitmq (но я не знаю насколько тяжело rabbit поддерживать в prod).
Пока планирую сделать 3 части:
1. база на postgresql, в ней же будет очередь задач.
2. api на flask которое будет принимать файлы, укладывать их на диск и ставить задачу в postgresql.
3. обработчик, который собственно будет обрабатывать файлы (хочется иметь возможность разнести его на другой сервер и поднимать несколько инстансов). Думаю api к нему тоже сделать на flask по http, чтобы была возможность разнести на разные сервера.
Вопрсосы:
1. Как запускать обработчик? Инициировать с приложения 1? И говорить ему "работая, очередь не пуста".
2. Как хранить файлы? Просто на диске? Или же создавать какой-либо файлообменник?
3. Хочу все завернуть в docker контейнеры. под python часть хочу вот этот взять - https://hub.docker.com/r/tiangolo/uwsgi-nginx-flask/. под postgresql - https://hub.docker.com/_/postgres/
Как вы считаете, есть ли здесь здравый смысл?)
Звучит норм. Правда если захочешь несколько серверов, надо будет что-то типа nfs например поднять


Vadim
15.12.2018
12:11:54

Aragaer
15.12.2018
12:11:56
нашел у себя одну потенциальную багу, может повлияло бы на ответ
типа когда кого-то убили, он еще мог ударить в ответ. В теории

Tishka17
15.12.2018
12:12:46
А
У меня такое было, да
В тестовых такое есть

Yegor
15.12.2018
12:16:31
print(len(data))
zz = list(dict.fromkeys(data))
print(len(zz))
» 30122
» 30116
Можно было бы и не заморачиваться...
Но почему?

Tishka17
15.12.2018
12:17:32

Yegor
15.12.2018
12:17:54
ща время засекемь!

Yergali
15.12.2018
12:18:32
всем привет. как отправить сообщение к боту через код? посоветуйте библиотеку

Tishka17
15.12.2018
12:18:35
В го, например, вообще сет отсутствует. Все делают через словарь

Google

Tishka17
15.12.2018
12:18:46

Aragaer
15.12.2018
12:18:50
мхм. Не, чот у меня не сходится с тестами кое-где количество раундов

Yegor
15.12.2018
12:19:01

Tishka17
15.12.2018
12:19:17

Yegor
15.12.2018
12:19:26
и всьо?

Tishka17
15.12.2018
12:19:29
Да

Маришка
15.12.2018
12:19:32

Tishka17
15.12.2018
12:19:36
Будет множество
Вместо списаа

Маришка
15.12.2018
12:19:44
Там же по принципу хеша работает

Yergali
15.12.2018
12:19:45

Маришка
15.12.2018
12:19:46
Тоже

Tishka17
15.12.2018
12:20:05

Yergali
15.12.2018
12:20:23

ivan
15.12.2018
12:20:42
Ща бы структуры данных самые базовые не знать
Даже set

Tishka17
15.12.2018
12:20:58
первое что нашел

ivan
15.12.2018
12:21:41
PyTelegramBotAPI
Это классика

Tishka17
15.12.2018
12:22:22

Google

?? Eugene
15.12.2018
12:22:44

Tishka17
15.12.2018
12:22:46
Ну вот

Aragaer
15.12.2018
12:23:18
а, блин, надо считать только полные раунды!

Yergali
15.12.2018
12:23:35

Tishka17
15.12.2018
12:25:57
Ну я вообще хз как посчитать неполный

Yegor
15.12.2018
12:26:27
print(len(data))
start = datetime.datetime.now()
zz = list(dict.fromkeys(data))
print('Количество: %s за: %s сек' % (len(zz), datetime.datetime.now()-start))
start = datetime.datetime.now()
zz = set(data)
print('Количество: %s за: %s сек' % (len(zz), datetime.datetime.now()-start))
30122
Количество: 30116 за: 0:00:00.022001 сек
Количество: 30116 за: 0:00:00.005000 сек
мдоо

Tishka17
15.12.2018
12:27:50
set в лист обратно не преобразовал

Aragaer
15.12.2018
12:30:12
ну у меня берется список тех, кто еще может мутузиться и по нему считается
раунд полный, если все из этого списка успели поработать прежде, чем помер последний враг
то есть если два гоблина бьют эльфа с 2 хитами, то первый убил, а второй ничего не делал = раунд неполный
а если 4 хита, то оба ударили = раунд полный

Yegor
15.12.2018
12:32:28
list(set(data)) ничего хорошего не сделал

Tishka17
15.12.2018
12:34:01
http://codephoto.ru/i/Iu9wp
Set быстрее в два раза

TpouHuK
15.12.2018
12:35:43

Tishka17
15.12.2018
12:36:55
А картинки те же