Kop
Он резвее вроде как стал, в 3.7 наверное ещё лучше
koder
Тесты на python3.5 в 3.6 асинк поправили
Нет, ничего там не оптимизировали, я давеча все перепрогнал на 3.7 - ничего не поменялось
koder
Оптимизацию yield from/await так и не впилили и оно на каждый шаг бегает вверх/вниз по стеку полноценно
koder
Кого?
koder
Это и есть uvloop
Kop
Кого?
Asyncio
koder
Он там отдельным тестом
koder
Нет, ничего не переписывали в ядре. Uvloop это сторонняя либа, которую можно вставить вместо asyncio loop - тесты для нее есть. Быстрее, но все равно до потоков далеко
koder
Если на async/await api.
Kop
а при чем тут GIL?
При том что в сырых потоках они выполняются последовательно
koder
У них свои минусы - там есть анализ. Джиттер большой, больше 20к умирают, неотменяемые и прочее
koder
Но для опеределенных задач - да
Vadim
Привет, у меня есть число 0.001. По сути это 1 * 10 ** -3. Как мне получить -3?
koder
Math.log10
Kop
на IO ага
Я про обычные из threading
Vadim
Math.log10
Я дурак, спасибо
Alex
Я про обычные из threading
дык и я про них же
koder
Привет, у меня есть число 0.001. По сути это 1 * 10 ** -3. Как мне получить -3?
Но может и есть способ "в лоб" экспоненту вынуть из флоата, я хз
Alex
При том что в сырых потоках они выполняются последовательно
тебя ведь не смущает что ивентлуп выполняется тоже "последовательно"
Alex
в смысле в одном потоке исполнения
Alex
И к чему ты выложил этот кусок копипасты?
Tishka17
Подскажите как бороться с urllib3.connectionpool: Connection pool is full, discarding connection при использовании boto3?
Alex
Вы о чем? Вы понимате, что асихронный вызов и потоки для разных задач используют?
Проблема: Идиоты пытаются тулить ансинхронщину во все дыры.
Евгений
Тут есть небольшая неточность в описании. Речь идет о потоках которые написаны на языке Python.
koder
Точнее у них есть и разные применент
🍁 Jaŭhien
Не знаю, мне asyncio нравится, треды сложна
koder
Но в рамках питона они решают ровно одну задачу
🍁 Jaŭhien
Вроде наоборот было ))
Да вот нет, треды реально сложней
Tishka17
треды сложнее?
Евгений
Alex
Но в рамках питона они решают ровно одну задачу
кооперативная \ вытесняющая многозадачность ага.
Kop
Да вот нет, треды реально сложней
Наверное от задач, но асинкио давался мне сложнее
Alex
Tishka17
ага
ну-ка синхронизируй мне корутины
koder
ага
Нууу как помне треды куда проще
Alex
Нууу как помне треды куда проще
ну хз... зависит как их использовать.
koder
И, главное, они полностью совместимы со всеми либа и
🍁 Jaŭhien
ну-ка синхронизируй мне корутины
ну их можно синхронизировать, но это нужно реже чем с тредами
Евгений
да нет, не частные.
Ну тогда попробую выразиться по другому. Если программист не запрашивает блокировку в С extention то её не будет :)
koder
А вот асинкои - это наш новый питон 3.0
Alex
просто обычно в процессе обучения тредам рассказывают синхронизацию
koder
ну их можно синхронизировать, но это нужно реже чем с тредами
А вот тебе шутка - в питоне в стандартной библиотеке asyncio.subptocess гонки
Tishka17
ну их можно синхронизировать, но это нужно реже чем с тредами
скажи на какой задаче при использвании тредов нужна синхронизация, а с корутинами - нет
Tishka17
хотя ладно, сам знаю. Но зато с тредами один зависший тред у тебя не вешает всё
koder
Потому что мальчики из кора тоже подумали - а хули там. Поток то один, давайте без синхронизации пошарим списки данных между корутинами
🍁 Jaŭhien
скажи на какой задаче при использвании тредов нужна синхронизация, а с корутинами - нет
Ну допустим, достать корутиной значение из очереди и обработать
koder
Какую?
Параллельное исполнение блокирующего кода
🍁 Jaŭhien
Опять же, с корутинами и очереди нечасто нужны
koder
Какую?
В других языках еще есть параллельные вычисления, но не в питоне.
Евгений
Параллельное исполнение блокирующего кода
Только есть разные причины по которым происходит блокирование потока.
Promise<>
добрый вечер. у меня есть 3 цикла, могу ли я выполнить первый цикл с шагом один, и перейти ко 2 циклу, там тоже один шаг сделать, перейти к 3 циклу - 1 шаг выполнить 1 цикл (1 шаг) =&gt; выполнить 2 цикл (1 шаг) =&gt; выполнить 3 цикл (1 шаг) =&gt; выполнить 1 цикл (1 шаг) =&gt; выполнить 2 цикл (1 шаг) =&gt; выполнить 3 цикл (1 шаг) ...
koder
Только есть разные причины по которым происходит блокирование потока.
Просто приведи пример, что можно сделать на потоках и нельзя на корутинах
Евгений
А именно?
Вычисление на CPU, Опреции ввода/вывода которые тоже можно разделить на быстрые/медленные
Евгений
Просто приведи пример, что можно сделать на потоках и нельзя на корутинах
Можно делать что угодно и на чем угодно. Вопрос на сколько будет эффективна реализация.
koder
Вычисление на CPU, Опреции ввода/вывода которые тоже можно разделить на быстрые/медленные
Спу баундед мы не обсуждаем. Операции с фс не обрабатываются asyncio, но они сейчас редко тупят (хотя бывает в кластерах)
koder
любое блокирующее действие
Например чтение из сокета?