
Pavel
13.03.2016
14:20:14
Привет!!

Vladimir
13.03.2016
14:20:54
Ёу!

Artem
13.03.2016
20:33:44
Ребятки, придумайте короткий адрес для этого чата.

Pavel
13.03.2016
20:35:01
Адрес где?

Google

Ivan
13.03.2016
20:35:04

Dmitriy
13.03.2016
20:35:05
ru_python

Artem
13.03.2016
20:36:58
Если поставить короткую ссылку, чат можно будет найти через поиск.
И побеждает вариант telegram.me/ru_python, потому что snake_case.

[Anonymous]
13.03.2016
20:40:07
ящик со змеями

Artem
13.03.2016
20:41:08
О, вот еще новая фича, можно закрепить сообщение (и опционально послать всем пуш)

Viktor
13.03.2016
20:44:35
хехм
хотите магию?
@unsavestkrbot

Artem
13.03.2016
20:45:10
Еще для модерации полезные штуки добавили https://telegram.org/blog/supergroups5k

Viktor
13.03.2016
20:45:37
только он очень медленный, потому что у меня интернет как в Индии, только не мобильный

Artem
13.03.2016
20:46:47
возьми ec2 у амазона на год, это бесплатно

Viktor
13.03.2016
20:51:44
да, неудачное описание

Google

Viktor
13.03.2016
20:51:59
он должен его сделать "анонимным"

Artem
13.03.2016
20:52:06
Он просто как webp возвращает?

Viktor
13.03.2016
20:52:06
вырвать из пака
да
скачивает, отправляет

Kolyann
13.03.2016
20:55:42
через веб версию сохраните
не?

Viktor
13.03.2016
20:56:04
ну ты не узнаешь из какого он пака
в этом суть

[Anonymous]
13.03.2016
20:57:14
https://www.gnu.org/software/gneuralnetwork/
БЫло
?

Viktor
13.03.2016
20:58:56
я не видел
Чет мне кажется что этого бота можно написать на PHP и поставить на хостинг бесплатный
и вебхуки

Dmitriy
13.03.2016
20:59:52
урал-нетворк

Viktor
13.03.2016
21:00:05
лол
как перейти на aiohttp клиента с requests?
Я вообще не понимаю сути асинхронного программирования
все эти ваши loop'ы

Google

Viktor
13.03.2016
21:23:07
я еще на ивентах кое-как понимал, но питоновский async/await вообще не понял

Artem
13.03.2016
21:28:58
Ну вот смотри, у тебя процесс дошел до await aiohttp.get, отправил запрос и пошел делать другие дела, а когда придет ответ, он вернется к этой строчке. Все это разруливается внутри лупа.

Viktor
13.03.2016
21:39:43
А как это в коде выглядит?
и еще, он просит не использовать .get, а юзать ClientSession, а там уже совсем все страшно

Artem
13.03.2016
21:46:10
А как это в коде выглядит?
import asyncio, aiohttp
async def get_json(url):
resp = await aiohttp.get(url)
return await resp.json()
loop = asyncio.get_event_loop()
future = get_json('http://httpbin.org/get')
result = loop.run_until_complete(future)

Viktor
13.03.2016
21:46:33

Artem
13.03.2016
21:46:41
да тут мало кода

Viktor
13.03.2016
21:52:23

Artem
13.03.2016
21:53:28

Viktor
13.03.2016
21:54:23

Artem
13.03.2016
21:54:30
нет

Viktor
13.03.2016
21:54:48
один раз создал, а atexit закрыл?

Artem
13.03.2016
21:55:04
ага

Viktor
13.03.2016
21:55:08
хм
а смысл от нее?

Artem
13.03.2016
21:57:31
она хранит общие куки и хедеры, а также можно указать коннектор, который будет использоваться, см. http://aiohttp.readthedocs.org/en/stable/client_reference.html#connectors

Viktor
13.03.2016
21:58:43
то есть мне её стоит для каждого бота создавать?

Artem
13.03.2016
21:59:38
да

Viktor
13.03.2016
22:00:06
это ты к 1 или 2?

Google

Viktor
13.03.2016
22:00:30
и еще, разные треды могут одну сессию использовать?

Artem
13.03.2016
22:02:18
еще смотри пример с одновременными запросами:
import asyncio, aiohttp
async def get_json(url):
resp = await aiohttp.get(url)
return await resp.json()
loop = asyncio.get_event_loop()
t = 'http://httpbin.org/delay/{}'
tasks = [get_json(t.format(n)) for n range(5)]
future = asyncio.gather(*tasks)
result = loop.run_until_complete(future)

Viktor
13.03.2016
22:02:53

Artem
13.03.2016
22:10:11
скорее всего у тебя все сломается. по идее для каждого треда надо будет создавать свой ивент луп и сессию, надо проверять

Viktor
13.03.2016
22:17:36
чорт, я ни понимать

Admin
ERROR: S client not available

Viktor
13.03.2016
22:18:23
meh, это могло быть обидно

Artem
13.03.2016
22:18:29
да не, по этой теме и правда документация заумная
предлагаю посмотреть видео с каких-нибудь конференций на эту тему, может стать понятней
http://www.youtube.com/results?search_query=pycon+asyncio

Viktor
13.03.2016
22:24:09
хм
сейчас 1:30, вставать в 6:30, надо еще сделать кое-что к школе
Идеальный момент чтобы изучить сопрограммы

Dmitriy
13.03.2016
22:39:22
почему все примеры с лупом заканчиваются на лупе
такие примеры ничем не отличаются от синхронного примера
без эвейтов
result = loop.run_until_complete(future)
вот тут мы ждем. и синхронно тут бы ждали
?

Google

Artem
13.03.2016
22:45:28
Синхронно бы ждали где мы вызываем функцию get_json

Dmitriy
13.03.2016
23:02:04

parikLS
13.03.2016
23:10:15
причем предыдущего респонса
а в случае асихнронного выполнения все геты полетят "одновременно"
а респонсы будут обрабатываться в порядке их получения

Dmitriy
13.03.2016
23:17:47
так это же в рамках одного треда все

parikLS
13.03.2016
23:23:47
ну допустим у тебя два гета на разные серваки, первый лег и ничего тебе не отвечает, допустим реквест отвалится по таймауту через 60 секунд, вот в случае синхронного выполнения, пока ты будешь ждать эти 60 секунд и только потом выполнится 2 гет
в случае асинхронного выполнения 2 гет выполнится сразу после первого, а респонс второго сможет обработаться раньше

Pavel
14.03.2016
04:55:09
так это же в рамках одного треда все
asyncio подразумевает, что ты очень долго ждёшь данные и очень быстро их обрабатываешь. В синх. варианте это выглядит так: жду-жду-жду-хоп_работаем-жду-жду-жду-хоп_работаем, а async - жду-жду-жду-хоп_работаем-хоп_работаем.

Whore Amazing
14.03.2016
05:31:32
С помощью побитового оператора И можно проверить, является ли число четным или нечетным. Для целых чисел, если младший бит равен 1, то число нечетное (основываясь на преобразовании двоичных чисел в десятичные). Зачем это нужно, если можно просто использовать %2? На моем компьютере, например, &1 выполняется на 66% быстрее. Довольно неплохое повышение производительности, скажу я вам.

Pavel
14.03.2016
06:01:51
>>> timeit.timeit("[1 if x%2==1 else 0 for x in range(100)]")
15.740704012048866
>>> timeit.timeit("[1 if x&1==1 else 0 for x in range(100)]")
14.000356002229637
а на моём компьютере разница минимальна.

87776
14.03.2016
06:17:11

Artem
14.03.2016
06:29:37

Whore Amazing
14.03.2016
06:31:10
хм, вот страннота, ноут не видит некоторые флешки. причем на старой пеке еще с портами юсб 1.0 флешки спокойно читает. а тут даже питание на нее не подается. можно как-то все же заставить его увидеть?

Artem
14.03.2016
07:05:06
вот пример про asyncio посложнее, но тоже условный
https://gist.github.com/banteg/3f7e1e06f575c9074c8a

Ivan
14.03.2016
07:07:04
Пф, школота
гхм? я с тех пор успел два высших уже получить, чота вряд ли я школота

87776
14.03.2016
07:07:33
чота много высших