
Nikolay
11.02.2017
18:09:34
я тут полистал по этим штукам, и не вижу причин их юзать. Те же задачи у меня реализуются в тредах. Подождать ответ от сервера, разобрать, сложить в очередь. Разбудить другой поток, проверить очередь, забрать данные из нее, сложить в базу. У меня 2 ляма идентичных запросов, я их по тредам раскидываю. основные ресурсы у меня сжирает база, а по памяти - очередь данных. все остальное легкое как пушинка, и от того, что оно будет работать в режиме async, а не tread, общая программа быстрее не станет. Да, я понимаю, когда мне все 2 ляма запросов за раз надо было бы сделать, тогда треды уже не катят. Но 50 это не тот поток. При том, что лично я async await вообще не знаю и вкуриваю ток поверхностно.
мало ли что и как у тебя реализуется сейчас
мы тебе написали, как сделать эффективнее
“но у меня сейчас по-другому!” - это не аргумент
просто прими, как факт, что использовать треды на питоне на практике стоит крайне редко

Google

Nikolay
11.02.2017
18:12:57
только в случаях, когда у тебя задача очень сильно завязана на I/O и системные внешние вызовы, причем не сетевые
как Александр правильно выше заметил - когда имеешь дело с жестко блокирующим девайсом, например

Alexander
11.02.2017
18:13:46
на асинке можно и с системными вызовами работать

Nikolay
11.02.2017
18:14:01
то есть если они быстро возвращают ответ

Alexander
11.02.2017
18:14:55
просто я например до этого работал на C++ и Java, и когда пришлось пилить не маленький проект на питоне, автоматом рука потянулась к многопоточности)

Nikolay
11.02.2017
18:15:15

Alexander
11.02.2017
18:15:17
и тут я понял...)
но все же, и многопоточность питоновскую можно приручить) и заставить работать как тебе нужно. хотя бы примерно так как нужно

Nikolay
11.02.2017
18:17:01

Alexander
11.02.2017
18:17:05
но когда копался в исходниках GIL'a и читал что там навертели в ветке питона 2.х просто кровь из глаз шла

Andjelx
11.02.2017
18:17:31
В тему вчерашнего разговора про async
https://www.reddit.com/r/Python/comments/5ryiq7/sticking_with_flask_vs_switching_to_one_of_the/

Google

Alexander
11.02.2017
18:17:38
в 3.х хотя бы основные епик моменты поправили

Aragaer
11.02.2017
18:17:39

Nikolay
11.02.2017
18:17:49

Aragaer
11.02.2017
18:17:53
я видел проект на плюсах, который был многопоточный ради многопоточности

Nikolay
11.02.2017
18:17:56
и треды сильно более нужными не стали

Aragaer
11.02.2017
18:18:05
там была куча потоков, которые работали строго последовательно
поэтому я для себя уяснил - прежде, чем я начну писать потоки, я сначала сделаю однопоточное и убежусь, что оно так не работает

Alexander
11.02.2017
18:18:50

Aragaer
11.02.2017
18:19:12
я не сужу, я делюсь наблюдениями и выводом

Alexander
11.02.2017
18:19:37

Nikolay
11.02.2017
18:19:38

Aragaer
11.02.2017
18:19:58
мой подход - сначала написать максимально простое. Возможно этого будет достаточно

Alexander
11.02.2017
18:19:59
не спорю

Nikolay
11.02.2017
18:22:28
не согласен?)

Roman
11.02.2017
18:23:27

Alexander
11.02.2017
18:23:55
кстати, вопрос, у кого чем обусловлен выбор питона для решения задач? скорость разработки не в счет

Nikolay
11.02.2017
18:24:25
предустановлен на большинстве систем искаропки

Roman
11.02.2017
18:25:07
я тут полистал по этим штукам, и не вижу причин их юзать. Те же задачи у меня реализуются в тредах. Подождать ответ от сервера, разобрать, сложить в очередь. Разбудить другой поток, проверить очередь, забрать данные из нее, сложить в базу. У меня 2 ляма идентичных запросов, я их по тредам раскидываю. основные ресурсы у меня сжирает база, а по памяти - очередь данных. все остальное легкое как пушинка, и от того, что оно будет работать в режиме async, а не tread, общая программа быстрее не станет. Да, я понимаю, когда мне все 2 ляма запросов за раз надо было бы сделать, тогда треды уже не катят. Но 50 это не тот поток. При том, что лично я async await вообще не знаю и вкуриваю ток поверхностно.
треды жрут память.

Google

Maksim
11.02.2017
18:25:10

Nikolay
11.02.2017
18:25:33

Maksim
11.02.2017
18:25:40

Alexander
11.02.2017
18:25:46
завязка на сишные либы, это про ctypes и CDLL?

Nikolay
11.02.2017
18:25:54
ага
потоки к асинхронности не имеют отношения
я про gevent/asyncio
для питона обвязка для любой сишной либы пишется очень быстро
и работает со скоростью сей
более того, даже если использует потоки

Roman
11.02.2017
18:26:46

Nikolay
11.02.2017
18:26:56
потому что GIL действует только на питоновские треды, но не на сишные

Artem
11.02.2017
18:27:13
да просто язык приятный и лаконичный сам по себе, ну и да, всегда можно вынести горячий кусок в расширение на си (++)

Alexander
11.02.2017
18:28:08
мне например нравится что можно на разных осях и устройствах запускать один и тот же код в большинстве случаев

Игорь
11.02.2017
18:28:56

Скрудж
11.02.2017
18:29:02

Alexander
11.02.2017
18:29:34
ну кто мешает все зависимости подтянуть?

Roman
11.02.2017
18:30:40

Alexander
11.02.2017
18:31:46
если треды работают как пул вокеров, то почему и нет?

Nikolay
11.02.2017
18:31:58

Google

Nikolay
11.02.2017
18:32:13
корутины тоже работают, как пул воркеров
и они быстрее на сетевых задачах

Alexander
11.02.2017
18:32:55
яростный поклоник асинхрона)

Admin
ERROR: S client not available

Nikolay
11.02.2017
18:33:14

Alexander
11.02.2017
18:33:24
если сайт питона хакнут и сделают дефейс страницы про многопоточность, я буду знать кто это сделал)

Nikolay
11.02.2017
18:33:39
шутки за 300

Alexander
11.02.2017
18:33:45
польские

Roman
11.02.2017
18:33:59

Игорь
11.02.2017
18:34:19

Nikolay
11.02.2017
18:34:26
делают треды внутри сишной либы
и позволяют управлять процессом их спавна из питона, лимитированно
например, можешь посмотреть на dask

Python'ер
11.02.2017
19:21:54
Просветите, а какие вообще возможности предоставляет django?

Nikolay
11.02.2017
19:22:25

Denis
11.02.2017
19:26:36
Куча подключаемых приложений и фреймворков для самых разных задач
Просветите, а какие вообще возможности предоставляет django?

Товарищ
11.02.2017
19:31:32
Кто то кидал файлик .pdf, справочник по пайтону, ни у кого не сохранился?

Denis
11.02.2017
19:33:40

Google

Petr
11.02.2017
19:35:03
Привет, если применить list() на generator без присваивания результата переменной, то list сначала поместиться в память а потом только удалиться или будет одновременно освобождать память и добавлять новые элементы?

Товарищ
11.02.2017
19:47:57

Игорь
11.02.2017
19:58:13

Petr
11.02.2017
20:05:56

Andjelx
11.02.2017
20:12:06

Nikolay
11.02.2017
20:12:49
а то он был бы бессмысленный

Andjelx
11.02.2017
20:14:25

Petr
11.02.2017
20:15:26

Nikolay
11.02.2017
20:17:17
шикарная вешь
эта лучше http://hilpisch.com/YH_Performance_Python_Slides.html#/

Andjelx
11.02.2017
20:17:49
посмотрим, спс

Nikolay
11.02.2017
23:24:39
ололо https://github.com/cblp/python5

53r63rn4r
12.02.2017
01:04:46
Сука, как обидно
Я днище в винде