@ru_python

Страница 2208 из 9768
Nikolay
11.02.2017
18:09:34
мы тебе написали, как сделать эффективнее

“но у меня сейчас по-другому!” - это не аргумент

просто прими, как факт, что использовать треды на питоне на практике стоит крайне редко

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

как Александр правильно выше заметил - когда имеешь дело с жестко блокирующим девайсом, например

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

Nikolay
11.02.2017
18:14:01
на асинке можно и с системными вызовами работать
можно, если они тоже асинхронные :) epoll, например

то есть если они быстро возвращают ответ

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

Alexander
11.02.2017
18:15:17
и тут я понял...)

но все же, и многопоточность питоновскую можно приручить) и заставить работать как тебе нужно. хотя бы примерно так как нужно

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.х хотя бы основные епик моменты поправили

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
я не сужу, я делюсь наблюдениями и выводом

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
но есть 100% синхронные задачи
на самом деле синхронных задач не бывает ) если это только не про "выстрелить обоим одновременно".

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

Nikolay
11.02.2017
18:24:25
кстати, вопрос, у кого чем обусловлен выбор питона для решения задач? скорость разработки не в счет
реализация асинхронности хорошая, отличная завязка на сишные либы, читабельность

предустановлен на большинстве систем искаропки

Google
Nikolay
11.02.2017
18:25:33
типа celery или вручную на потоки?
ты про что? про асинхронность?

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

Nikolay
11.02.2017
18:25:54
ага
потоки к асинхронности не имеют отношения

я про gevent/asyncio

завязка на сишные либы, это про ctypes и CDLL?
это про всю инфраструктуру

для питона обвязка для любой сишной либы пишется очень быстро

и работает со скоростью сей

более того, даже если использует потоки

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
треды жрут память.
ну у меня сейчас 16метров жрет. 10тредов. запущено.

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

Roman
11.02.2017
18:30:40
ну у меня сейчас 16метров жрет. 10тредов. запущено.
зачем тебе треды? что ты будешь делать, когда тебе надо будет обойти 1-2 млрд. ссылок?

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
потому что они - медленное говно? :)
интересно, а насколько реально некоторые сишные модули питона исполнять в пуле тредов? )

Nikolay
11.02.2017
18:34:26
делают треды внутри сишной либы

и позволяют управлять процессом их спавна из питона, лимитированно

например, можешь посмотреть на dask

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

Nikolay
11.02.2017
19:22:25
Просветите, а какие вообще возможности предоставляет django?
orm, темплейтный движок, админка из коробки

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
Привет, если применить list() на generator без присваивания результата переменной, то list сначала поместиться в память а потом только удалиться или будет одновременно освобождать память и добавлять новые элементы?
он поместится в память, передастся на вывод, после обработки вывода удалится. Т.е. если ты применишь его в цикле for, то он удалится после того, как закончит работать for

Andjelx
11.02.2017
20:12:06
А если так? g = (foo() for i in range(1000 * 1000)) for i in g: pass
можно посмотреть профайлером

Nikolay
11.02.2017
20:12:49
А если так? g = (foo() for i in range(1000 * 1000)) for i in g: pass
хорошо, что интерпретатор не оптимизирует такой код :)

а то он был бы бессмысленный

Andjelx
11.02.2017
20:14:25
А если так? g = (foo() for i in range(1000 * 1000)) for i in g: pass
https://www.huyng.com/posts/python-performance-analysis

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
Сука, как обидно

Я днище в винде

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