@ru_python

Страница 2981 из 9768
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
Мне надо инструкция

Как и где (на каком сайте?) создать инлайн бот?

b0g3r
18.06.2017
15:48:21
@botoid
зачем?(

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, я не один такой и лучше ниче не придумали :(

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
Месяц тебя ждало!

Google
Nikolay
18.06.2017
17:45:43
а как тогда луп может быть своим в 3.6?
так, что loop.get_event_loop() всегда в 3.6 возвращает свой текущий луп

а не общий, как в 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 потоки себя ведут у меня просто щас сложилось впечатление, что асинкио - это те же потоки, только с кучей сахара. с ними в разы меньше мозгоебства как-то но я, конечно, видимо, не прав %)

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

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

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

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

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

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

Igor
18.06.2017
18:09:18
Ну так это не io
мне че-т всегда казалось, что сеть и фс - это i/o :(

Anton
18.06.2017
18:09:24
аэыы.. ну вот создам я четыре потока и буду туда requests.getы скармливать. очередь создам. join() сделаю. не? хуяк - все в четыре раза быстрее! ну, грубо говоря :)
причем на многопроцессорных системах поток может проебать момент, когда GIL свободен, потому что его могут захватить на длругом ядре

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
просто фишка в том, что ты тратишь процессорное время на переключения потоков

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
хорошо, спасибо большое за терпение и ответы)
вообще вся эта фишка с async/await задумана для того, чтобы избавить тебя от callback hell, как в ноде, и ты писал асинхронный код в синхронном стиле

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

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

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

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 спамить тысячи корутин, то сначала они запустятся все, а потом поедет асинхронщина. Это насколько я вьезжаю

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