
Anton
18.06.2017
14:53:41

Dmitriy
18.06.2017
14:53:54
Нормально же работает
Шутки шутками, но дворняга шикарный

Vasiliy
18.06.2017
14:54:48
переписывай на 3.6

Google

Dmitriy
18.06.2017
14:55:18
Он хоть новый, но мне более ранняя по душе

Anton
18.06.2017
14:56:28

Stanislav
18.06.2017
15:21:20
Флуд это хорошо
Главное если кто-то прийдет с вопросом по теме сразу же заткнуться
Таким образом никто никому не мешает

͜͡͡B͜͡u͜͡s͜͡i͜͡n͜͡e͜͡s͜͡s͜͡ ͜͡M͜͡y͜͡ ͜͡L͜͡i͜͡f͜͡e͜͡~͜͡°͜͡|͜͡°͜͡®͜͜͡
18.06.2017
15:46:57
Мне надо инструкция
Как и где (на каком сайте?) создать инлайн бот?

Rocket
18.06.2017
15:47:24

b0g3r
18.06.2017
15:48:21

Rocket
18.06.2017
15:48:39

b0g3r
18.06.2017
15:48:50
нет, я не хотел распространения этого туда)

Artem
18.06.2017
15:49:32
свежего бизли все видели? (я нет) https://www.youtube.com/watch?v=js_0wjzuMfc

Sergey
18.06.2017
17:12:43

Artem
18.06.2017
17:13:06
ну во многих

Google

Igor
18.06.2017
17:21:39
у меня тупой вопрос насчет asyncio
есть несколько функций-команд, они синхронные.
в них хочется вызывать async defы, в которых уже асинхронщина ебётся.
@cli.command()
def foo(*args):
loop = asyncio.get_event_loop()
loop.run_until_complete(
do_async_foo(*args)
)
меня жутко корёжит от вызова get_event_loop с run_until_complete на каждый чих, таких однообразных функций щас уже штук 10.
я закинул себе в helpers.py хуйнюшку:
def run_sync(coroutine):
loop = asyncio.get_event_loop()
return loop.run_until_complete(coroutine)
но меня не покидает мысль, что должно быть чё-то более клёвое и удобное.
как-нибудь круче-питоняшнее можно сделать?
блин, интересно, прокатит ли декоратор
ну да, судя по https://github.com/miyakogi/syncer, я не один такой и лучше ниче не придумали :(

Nikolay
18.06.2017
17:29:05

Igor
18.06.2017
17:29:14
в смысле?

Nikolay
18.06.2017
17:29:23
в прямом, в 3.5 только так и надо было делать

Igor
18.06.2017
17:29:30
ты имеешь в виду, без выноса в переменную loop?

Nikolay
18.06.2017
17:29:31
в 3.6 сделали, что луп может быть свой
я имею в виду, как аргумент любой функции

Igor
18.06.2017
17:29:49
да ну это пиздец какой-то
в аргументы и так периодически приходится сессии-семафоры прокидывать, а тут еще и луп
что за говно((

Nikolay
18.06.2017
17:31:04
ну посмотри любой доклад про 3.5
они это продвигали, как основной механизм
в 3.6 исправились

Igor
18.06.2017
17:31:45
я окончательно запутался, кажется
что продвигали в 3.5? проброс лупа аргументом в асинхронную функцию?
а как тогда луп может быть своим в 3.6?
а, типа new_event_loop и потом set_event_loop что ли
пойду пиво открою, в общем

ultranoise ?
18.06.2017
17:41:35
Месяц тебя ждало!

Nikolay
18.06.2017
17:45:20

Google

Nikolay
18.06.2017
17:45:43
а не общий, как в 3.5

Igor
18.06.2017
17:48:35
а какие юзкейсы могут быть у нескольких лупов?(

Nikolay
18.06.2017
17:51:19
Глянь на пакет Janus
Там очередь хитрожопая
Для таких случаев

Igor
18.06.2017
17:53:26
ага, т.е. таким образом тред-сейф достигается что ли?
а в производительности никак не выигрывает?

Anton
18.06.2017
17:57:10

Nikolay
18.06.2017
17:57:40
Всё как всегда

Igor
18.06.2017
18:03:38
Выигрывает, если мультипроцессинг. GIL же.
ну с мультипроцессингом понятно, да)
просто немного любопытно, как асинхронщина vs потоки себя ведут
у меня просто щас сложилось впечатление, что асинкио - это те же потоки, только с кучей сахара. с ними в разы меньше мозгоебства как-то
но я, конечно, видимо, не прав %)

Nikolay
18.06.2017
18:04:08

Igor
18.06.2017
18:05:39
да, ты говорил
но шо то хуйня, шо это хуйня, как говорил дядечка эскобар.
оба борятся с блокировкой i/o и вот че-т асинкио посимпатичнее-поудобнее выглядит в этом плане
но я, наверное, не дорос до других применений, где будут рулить потоки и где сольется асинкио
просто не представляю, че и когда выбирать в таком случае

Anton
18.06.2017
18:05:41

Nikolay
18.06.2017
18:05:41
Это кооперативная многозадачность, по умолчанию все в одном потоке

Anton
18.06.2017
18:06:04
больше, имею в виде по сравнению с асинхроном

Nikolay
18.06.2017
18:06:11

Anton
18.06.2017
18:06:21

Igor
18.06.2017
18:07:37
Потоки никак не борются с блокировкой io
аэыы..
ну вот создам я четыре потока и буду туда requests.getы скармливать. очередь создам. join() сделаю. не?
хуяк - все в четыре раза быстрее!
ну, грубо говоря :)

Google

Igor
18.06.2017
18:08:12
один фиг GIL будет их переключать

Anton
18.06.2017
18:08:17

Igor
18.06.2017
18:08:49
ну а если asyncio.gather() сделать, то он тоже нихрена не вернёт же, пока все таски в нем не выполнятся

Nikolay
18.06.2017
18:09:01

Igor
18.06.2017
18:09:18

Anton
18.06.2017
18:09:24

Igor
18.06.2017
18:09:37
или там фишка в том, что GIL может сильно тупить и долго не будет переключать на другой поток, хотя остальные уже освободились?

Admin
ERROR: S client not available

Nikolay
18.06.2017
18:09:41

Anton
18.06.2017
18:10:05
просто фишка в том, что ты тратишь процессорное время на переключения потоков

Nikolay
18.06.2017
18:11:15

Anton
18.06.2017
18:11:27
и на синхронизацию

Nikolay
18.06.2017
18:11:30
А корутины сами решают, когда чего делать

Igor
18.06.2017
18:11:36
а, в то время как асинхронщина сразу выполнится, выплюнет результат и забьет?
ааа жесть.

Anton
18.06.2017
18:11:56
корутины честно переключатся на await
и честно всегда в потоке работает только одна корутна

Igor
18.06.2017
18:14:15
а как тогда gather() работает? :(
вы извините, что я с такими вопросами, но это лучше же, чем про ботов в телеграме слушать постоянно, я надеюсь

Anton
18.06.2017
18:15:13
как то так

Google

Anton
18.06.2017
18:15:40
ну или типа того, глянь доки, там все написано

Igor
18.06.2017
18:16:36
хорошо, спасибо большое за терпение и ответы)

Anton
18.06.2017
18:17:44
если хочешь реально прокачаться, изучи твистед, это олдскульная либа для асинхронных клиент-серверных систем))

Igor
18.06.2017
18:18:59
вот да, это мне нравится, но я нихуя не понимаю че-то, если поток один и выполняется только одна фюча, то как тогда gather() работает
но да, это я уже сам почитаю

Anton
18.06.2017
18:19:21

Igor
18.06.2017
18:19:36
ненене, я хочу нормальным формошлёпом остаться :)
точнее, в разумных пределах

Rocket
18.06.2017
18:19:38

Anton
18.06.2017
18:19:53
поочереди - кооперативно

Igor
18.06.2017
18:20:48
но они же параллельно по факту выполняются, получается; ну, если по сети запросики гонять на что-нибудь, что может долго отвечать.
это какие-то маленькие детишки-субпотоки получаются или типа того.
но да, здесь лучше уже не пытаться спорить, а правда почитать

Марк
18.06.2017
18:21:37

Igor
18.06.2017
18:22:09
ааа

Anton
18.06.2017
18:22:12
именно

Igor
18.06.2017
18:22:25
всё, дошло, спасибо :)

Anton
18.06.2017
18:22:28
в один момент выполняется одна корутина между await
кодга она доходит до await, она ждет, а другая начинает выполняться

Марк
18.06.2017
18:27:08
Но тут, конечно, не всё так просто. Если через async.await спамить тысячи корутин, то сначала они запустятся все, а потом поедет асинхронщина. Это насколько я вьезжаю