@ru_python

Страница 3041 из 9768
Koko
27.06.2017
11:35:15
Аа, я в шары долблюсь, стыд: As of Python >= 2.7 and >= 3.2, the argparse module is maintained within the Python standard library. argparse should work on Python >= 2.3, it was tested on: 2.3, 2.4, 2.5, 2.6 and 2.7 чот думал что >=2.7 / >=3.2 это вообще _всё_ что поддерживается)

Google
Dmitriy
27.06.2017
11:38:23
ЕМНИП
Ах да, можно и без корутин, с коллбэком

Anna
27.06.2017
11:44:17
а чем асинхронные колбэки отличаются от генераторов?

Nikolay
27.06.2017
11:45:15
коллбэки - это функции, которые дергаются по какому-то событию

Anna
27.06.2017
11:45:36
@gen.coroutine генератор

Nikolay
27.06.2017
11:45:36
например, событию на сокете

а генератор - это концепция явного возвращения результата с сохранением состояния

в питоне корутины реализованы на генераторах, да, но, тем не менее, это всего лишь одна из возможных реализаций

Anna
27.06.2017
11:47:55
коллбеки в запросах не лочат бд?

Anton
27.06.2017
11:48:24
коллбеки в запросах не лочат бд?
лочат именно бд, или поток, в котором выполняются?

Anna
27.06.2017
11:49:02
а чем плох залоченный поток?

Anton
27.06.2017
11:49:20
Google
Dmitriy
27.06.2017
11:49:33
Реквесты остальные могут ждать

Nikolay
27.06.2017
11:49:34
Анна, падажжи

у тебя каша в голове

Anton
27.06.2017
11:49:45
БД будет лочится, если данные одинаковые меняются

Anna
27.06.2017
11:49:52
пытаюсь разобраться

Nikolay
27.06.2017
11:50:11
1) есть потоки, есть асинхронность - это вещи не связанные между собой

Anna
27.06.2017
11:50:20
Nikolay
27.06.2017
11:50:57
2) асинхронность в случае питона чаще всего работает в одном потоке, то есть строится в виде дерева функций, представляющих собой коллбэки на event loop’е

Anton
27.06.2017
11:51:15
как этого избежать?
использовать асинхронность (предпочтительно) / многопоточность (нежелательно)

Проксимов
27.06.2017
11:51:36
Nikolay
27.06.2017
11:51:40
3) в результате этого, если хоть какая-то из этих функций долго работает и не возвращает управление - все виснет, потому что поток один и параллельности никакой нет

Anton
27.06.2017
11:51:52
Но иногда многопоточность нужна
иногда да, но почти всегда - нет

Nikolay
27.06.2017
11:52:02
Но иногда многопоточность нужна
в питоне - практически никогда

Anton
27.06.2017
11:52:07
для сетевых запросов - не нужна

Anna
27.06.2017
11:52:38
для сетевых запросов tornado.gen.coroutine + yield?

Nikolay
27.06.2017
11:52:42
так вот, чтобы не лочить базу - надо с ней асинхронно общаться, но мало какие базы это поддерживают из коробки

для сетевых запросов tornado.gen.coroutine + yield?
для сетевых запросов aiohttp и async/await

Anton
27.06.2017
11:53:04
Nikolay
27.06.2017
11:53:06
в современном питоне

Anna
27.06.2017
11:53:19
торнадо и 3 питон

Google
Dmitriy
27.06.2017
11:53:37
Говорю же не модно

Ignalion
27.06.2017
11:53:39
торнадо и 3 питон
Надо yield'ить

Anton
27.06.2017
11:53:47
тогда async/await

Nikolay
27.06.2017
11:53:59
торнадо и 3 питон
торнадо вроде уже умеет в async/await

Anna
27.06.2017
11:54:06
мнения разошлись

Dmitriy
27.06.2017
11:54:17
И то и другое можно

Nikolay
27.06.2017
11:54:25
Anton
27.06.2017
11:54:37
http://www.tornadoweb.org/en/stable/guide/coroutines.html#python-3-5-async-and-await

Nikolay
27.06.2017
11:54:39
просто async/await более свежий и приятный

Anna
27.06.2017
11:55:32
оу, спасибо

Ignalion
27.06.2017
11:55:38
Не так. С async/await можно использовать асинхронные генераторы

Ignalion
27.06.2017
11:58:26
что это дает?
В ранних реализациях вся асинхронность делалась единственным возможным разрывом потока выполнения в функции — то есть yield'ом. Это значит, что ты его не можешь использовать по назначению. (Ну и то что StopIteration приводит к аду и Израилю дебага) А с приходом async/await, у тебя для корутин используется специальный кейворд, но при этом ты все ещё можешь yield'ить значения из генератора наружу

Проксимов
27.06.2017
11:58:33
Fuck my brain

Anna
27.06.2017
11:58:58
ёмана ..

Ignalion
27.06.2017
11:59:36
ёмана ..
Ну да, скорей всего, это не нужно:) Но это можно

Егор Партыка
27.06.2017
11:59:41
привет всем

Nikolay
27.06.2017
11:59:43
не смешивай генераторы и корутины

Ignalion
27.06.2017
12:00:04
только с питона 3.6
Ну, сейчас же 3.6 актуальный?

Google
Anna
27.06.2017
12:00:07
Python 3.5: async and await же

Nikolay
27.06.2017
12:00:17
Ну, сейчас же 3.6 актуальный?
да, но async/await появился в 3.5

Anna
27.06.2017
12:00:18
Python 3.5 introduces the async and await keywords (functions using these keywords are also called “native coroutines”)

Nikolay
27.06.2017
12:00:31
и в асинхронные генераторы 3.5 не умел

Ignalion
27.06.2017
12:00:53
и в асинхронные генераторы 3.5 не умел
Хмммм. Странно. Да, могу попутать по версиям

Nikolay
27.06.2017
12:02:00
не, там просто небольшая путаница в определениях

асинхронный генератор - это когда ты можешь сделать yield из async-функции, то есть корутины

в обычном async-await подходе ты этого сделать не можешь, у тебя return

Admin
ERROR: S client not available

Nikolay
27.06.2017
12:04:12
Ну я именно про yield из корутины
ну вот его ввели только в 3.6

до этого была боль

Anton
27.06.2017
12:04:44
да, асинхронные генераторы полезная весч

Anna
27.06.2017
12:05:28
кто-нить может показать на примере?

Anton
27.06.2017
12:06:07
async def foo(): async for item in db.query(...): yield item

Nikolay
27.06.2017
12:06:44
кто-нить может показать на примере?
я не думаю, что для твоих задач это сильно нужно пока, на самом деле)

хотя...

Anton
27.06.2017
12:07:25
удобно обрабатывать элементы массива из бд, не собирая их в список

Anna
27.06.2017
12:08:02
как выглядит асинхронный GET-запрос?

Nikolay
27.06.2017
12:08:27
resp = await session.get(‘http://ololo.bugaga/‘)

Google
Anton
27.06.2017
12:08:37
ээ, http://www.tornadoweb.org/en/stable/guide/coroutines.html#python-3-5-async-and-await же

или ты по ссылкам не ходишь?

Nikolay
27.06.2017
12:09:03
да пофиг, та же идея

Anna
27.06.2017
12:09:10
хожу))

Anton
27.06.2017
12:09:10
Nikolay
27.06.2017
12:09:11
ну будет http_client.fetch

а, окей)

Anton
27.06.2017
12:10:10
да пофиг, та же идея
но да, я тут согласен, что лучше заюзать aiohttp

Anna
27.06.2017
12:12:44
aiohttp?

Nikolay
27.06.2017
12:12:51
(я не знаю, что еще ответить на такое)

Anna
27.06.2017
12:13:29
чем aiohttp от async-and-await отличается?

Nikolay
27.06.2017
12:13:51
Vespertilio
27.06.2017
12:14:07
может asyncio?

Nikolay
27.06.2017
12:14:07
это модуль потипу торнады, только новый

Anton
27.06.2017
12:14:36
а что, гугл тоже попал в списком роскомнадзора?

Anton
27.06.2017
12:14:54
сегодня похоже опять

Маришка
27.06.2017
12:14:59
Лолшто?

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