@ru_python

Страница 9229 из 9768
toby
03.06.2019
20:19:49
воу

а это круто) спасибо

Yuri
03.06.2019
20:38:06
Привет чат всем

Pavel
03.06.2019
20:38:53
Привет чат всем
правила. ты их читал?

Google
Vlad
03.06.2019
20:39:36
Есть питон, есть вим, не работают вместе, шо делать, какие подводные?

Tishka17
03.06.2019
20:39:53
в смысле не работают и в смысле вместе?

Vlad
03.06.2019
20:41:58
Интеграция питона в вим через джедай

koder
03.06.2019
20:43:32
Интеграция питона в вим через джедай
я вообше хз, но в любом случае лучше подробнее описать проблему. Что именно не работает, что пробовал, что смотрел

Vlad
03.06.2019
20:55:56
я вообше хз, но в любом случае лучше подробнее описать проблему. Что именно не работает, что пробовал, что смотрел
Есть питон 3.7.3 64х, есть вим 8.1.чтотодальше 64х, хотел внедрить нормальную проверку и дополнение кода, почитал что хорош jedi-vim, выполнил его установку и вим начал обильно ругаться на невозможность инициализации питона, +python штуки в виме есть, Команда echo has(python) даёт 0,

Глеб
03.06.2019
20:56:22
@Kdanylov прошу прощения за, возможно, тупой вопрос, но в тесте asyncio количество загруженных ядер для асинка и тредов было равным? Я перед сном в чат заглянул, меня что-то клинит на том, что асинк в один поток работает.

koder
03.06.2019
21:03:52
@Kdanylov прошу прощения за, возможно, тупой вопрос, но в тесте asyncio количество загруженных ядер для асинка и тредов было равным? Я перед сном в чат заглянул, меня что-то клинит на том, что асинк в один поток работает.
да, все тесты запускались с привязкой к одному ядру. Генератор нагрузки пинился на другие ядра процессора. В питоне потоки тоже в один поток работают фактически. Пока один исполняет питон-байтокод - остальные стоят. Но потенциально могут исполнять узкие прослойки С-кода. Но тут нет, тест пинится на одно ядро процессора. Если не пинить на одно ядро - потоки начинают сильно проседать изза паразитных переключений. Это, в частности, проблема многих "тестов" потоки vs async в инете - народ тупо не знает что нужно пинить на одно ядро многопоточные программы на питоне

Глеб
03.06.2019
21:10:15
О как. А простого синхронного теста не было?

Без потоков и асинка

koder
03.06.2019
21:11:26
@nepherpitou собвственно это совершенно ожидаемый результат. asyncio выполняет просто безумное количество питон кода на каждый await сначала ты уходишь вних по славно задизайненному со всеми требуемыми паттернами стеку вызовов в недра asyncio что бы она сконтруировала тебе Future потом это future ты везешь обратно по всему своему стеку вызовов до самого loop. loop регистрирует на него калбек и проделывает вагон метаработы и всякой фигни. Однажды future исполнится, ему поставят done, вызовется callback и корутину подвинут в очередь готовых. Потом обратно через весь стек вниз прокинут результат. Выходит 400+ питоновских инструкций на каждый await. Каждая примерно по ~50 тактов CPU. или 20к+ тактов. А переключение потоков в ядре со всем скедуленгом и туда-сюда < 500 тактов. Так и живем

О как. А простого синхронного теста не было?
нет, да и нет смысла, будет совсем смешно. Но можно запустить потоковый тест на одном воркере

Тест будет полностью лимитироваться латентностью tcp стеков и сетки

Глеб
03.06.2019
21:20:42
Тест будет полностью лимитироваться латентностью tcp стеков и сетки
А с медлительным сервером не оценивал результаты? Когда время исполнения питонячей богодельни будет сильно меньше времени ответа сервера.

Google
Глеб
03.06.2019
21:21:16
Блин, надо будет завтра поковыряться.

Карлос
03.06.2019
21:22:54
как удалить все папки в которых нету файла ПАРОЛИ ?

Глеб
03.06.2019
21:24:49
Хм... Для такого теста надо логику менять, в текущем виде асинк будет ждать каждого нового ответа, а потоки будут делать это в N раз чаще.

koder
03.06.2019
21:25:03
@nepherpitou если сервер будет тупить, или если на клиенткой стороне будет еще какая-то активность между приемом и посылкой сообщения, то просто возрастет латентность. Сообщения же не паплайнятся. Но в таком случае ты будешь мерять не совсем то. но вообще по мере роста количества соединений потокам становится все хуже и хуже, так что если сервер будет тупить и открытые соединения будут копится - потоки начнут проигрывать постепенно изза повышенного потребления ресурсов при простое. Собвественно на том ноуте где я это тестит больше 20к потоков не удавалось запустить. На текущем работает с 30k, но дальше уже не.

Глеб
03.06.2019
21:26:10
нет, у тебя же асинков тоже много как и потоков. все параллельно
В десятый раз пошел с телефона а код тупить...

Tishka17
03.06.2019
21:26:12
Они и так воюют за гил

В общем непонятно

Код теста бы

koder
03.06.2019
21:27:15
Они и так воюют за гил
код теста в той же репе. main.py

так они не воюют

Tishka17
03.06.2019
21:27:27
Я проглядел ссылку

koder
03.06.2019
21:27:49
https://github.com/koder-ua/network_ping_test/blob/master/perf_report.md#%D1%81%D0%BE%D0%B2%D0%B5%D1%80%D1%88%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5-%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2%D1%8B вот кусок смотри - там есть расклады по системным вызовам с affiniti и без

без афинити на каждый recv - 15 futex_wait

там хитрая фигня выходит - в добавок ОС начинает елозить потоки по все доступным ядрам CPU равномерно

мусорит кеши и прочее

Глеб
03.06.2019
21:29:59
Да можно ссылку на строчку кода кинуть, я открою :) а то ты там, кажется, диссертацию так скоро напишешь.

Google
Floss
03.06.2019
21:34:39
Необходимо собрать по дизайн-эскизам экранов весь функционал для магазина, на Django. Все стандартно: api для стыковки с фронтом, мультиязычность, мультивалюстность, фингерпринты, авторизация через соцсети, подбор товара, конструктор товара, оплата через платежный шлюз, чат. Для админки можно использовать шаблон аля jet. Фронт на angular уже готов. От вас нужен только бек на django. #работа #удаленка

koder
03.06.2019
21:34:40
А где создаётся много асинков? Из шелла?
тааак. все корутины (они же асинки) живут в одном потоке OC. Но корутин у тебя столько же, сколько и потоков. А, я тебя понял. Если в тестируемой части начать делать дополнительные операции, а не только пинг-понг, то расклады будут чутка другими. Долго писать. Но в общем этот тест не про симуляцию реальной нагрузки - он про накладные расходы. Накладные разходы зависят только от количества соединений. Потоки проседяют быстрее остальных про этим. Если у тебя будет МНОГО медленных клиентов - то потоки будут смотреться хуже, чем если их мало. Но все равно лучше async по пропусной способности. Но так то у async есть другие проймузества

Tishka17
03.06.2019
21:35:12
64B
Ээ

Черт дохуя мало

koder
03.06.2019
21:35:26
я гонял и на 2к

Tishka17
03.06.2019
21:35:35
Давай-ка 100к хотя бы

koder
03.06.2019
21:35:43
А смысл?

Tishka17
03.06.2019
21:35:55
Асинкио обещали быстрее за счёт экономии на чтении их буфера

koder
03.06.2019
21:35:57
ты просто начнешь тратить время на tcp стек, а не на свой код

я не понимаю как так может быть

Tishka17
03.06.2019
21:36:11
Мол треды переключаются когда ты читаешь, а тут сразу

На маленьких размерах никто не обещал

И да, у тебя код с тредами не умеет дочитывать данных, остальные не с смотрел

Tishka17
03.06.2019
21:37:15
ты просто начнешь тратить время на tcp стек, а не на свой код
Короче, проверь на сотне кило. Думаю результат будет другой

koder
03.06.2019
21:37:19
ээээ, я не понял. Когда ты используешь асинк - ты делаешь сначала poll и получаешь список сокетов на которых есть данные. Дальше ты из этих сокетов точно так же, как и в потоковой системе, читаешь данные. Тем же самым recv

Разницы ни в буферах ни в ос тут нет

Google
Tishka17
03.06.2019
21:37:48
Ну вот у тебя есть 100к данных. В асинке пока не прочитаешь не переключишься

А треде - можешь

koder
03.06.2019
21:38:00
нет

Tishka17
03.06.2019
21:38:03
Там именно эту часть тюнили

Проверь, иначе это все теория

koder
03.06.2019
21:38:24
а кто мешает сделать в потоке recv(100000)

так а что проверять то - я и так те скажу

делаешь в потоке recv с большим размером буфера и читаешь все что есть

Tishka17
03.06.2019
21:39:02
а кто мешает сделать в потоке recv(100000)
Никто не гарантирует что во время этого вызова не будет сотни переключений

koder
03.06.2019
21:39:02
причем ровно одним запросом в ядро

это один вызов ядра

Tishka17
03.06.2019
21:39:17
Можно подумать питон именно так и сделает

koder
03.06.2019
21:39:21
какие переключения?

да

Tishka17
03.06.2019
21:39:23
Короче, имхо твой тест не полностью корректный

koder
03.06.2019
21:40:05
в смысле пруф? когда ты на сокете делаешь socket.recv(10000000) - вызов узодит в ядро с таким за размером требуемого буфера

если там нет данных - ты блокируешься

если дам есть хоть байт данных - ты получишь обратно все что есть

Tishka17
03.06.2019
21:40:35
Не хочешь проверить поведение на большем объеме - твое дело. Но в реальности ради 50байт никто не будет такое писать, так что нагрузка у тебя нереальная

Google
Tishka17
03.06.2019
21:40:53
Ну ок

Глеб
03.06.2019
21:41:14
Так никто не спорит с тем, что нагрузка не реальная

koder
03.06.2019
21:41:26
сори, но хоть посмотри как работает ядро и питон с сокетами

Tishka17
03.06.2019
21:41:31
Глеб
03.06.2019
21:41:52
Вот это я и пытаюсь понять

koder
03.06.2019
21:41:53
накладные расходы разных систем на передачу блока данных

Tishka17
03.06.2019
21:42:16
Ну а размер блока не важен, ага. Мы должны проверить

Зачем тогда тесты, если все принимаем на веру

Глеб
03.06.2019
21:42:43
Но тут вопрос - почему потоки множатся, а корутина одна

Tishka17
03.06.2019
21:42:47
Зато на одно ядро пинили

koder
03.06.2019
21:42:49
Ну а размер блока не важен, ага. Мы должны проверить
а от кокретных данных зависит скоротьс?

koder
03.06.2019
21:43:02
может пробелы быстрее букв 'a' идут?

может в субботу быстрее asyncio?

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