170 похожих чатов

А что, корутины это разве про многопоточность?

34 ответов

18 просмотров

Корутины – это про конкурентное выполнение. Конкурентность != многопоточность.

Ну да. Выполнение асинхронного кода в синхронном стиле

Ivan Tyshchenko
Корутины – это про конкурентное выполнение. Конкур...

То есть вы хотите сказать что если в фоновом потоке происходят вычисления,в главном пользователь колупает в носу то эта система с двумя потоками не многопоточная а конкурентная?.

Alex- Автор вопроса
Anatoliy Kernokus
То есть вы хотите сказать что если в фоновом поток...

Нет. Хотя фактически треды в питоне это инструмент вытесняющей конкурентности, но думаю пока этот момент можно опустить

Alex
Нет. Хотя фактически треды в питоне это инструмент...

Я из мира андроид и мне не очень понятна ваша логика

Alex- Автор вопроса
Anatoliy Kernokus
Я из мира андроид и мне не очень понятна ваша логи...

Я думаю в питоне нет таких концепций которых не было бы в джаве, так что странный комментарий.

Alex
Я думаю в питоне нет таких концепций которых не бы...

Я поэтому и пытаюсь у вас узнать разницу между конкурентностью и многопоточностью.что вы понимаете под первым словом

Alex- Автор вопроса
Anatoliy Kernokus
Я поэтому и пытаюсь у вас узнать разницу между кон...

Конкурентного выполнения работы ты можешь достигнуть не обязательно через "честный" параллелизм на ядрах. https://en.wikipedia.org/wiki/Preemption_(computing)

Anatoliy Kernokus
Я поэтому и пытаюсь у вас узнать разницу между кон...

разница в том что конкурентность это свойство системы, а многопоточность *одна из* ее реализаций.

Anatoliy Kernokus
Я поэтому и пытаюсь у вас узнать разницу между кон...

Краткие сведения о GIL: Одновременно может выполняться один поток. Интерпретатор Python переключается между потоками для достижения конкурентности. GIL применим к CPython (стандартной реализации). Но такие как, например, Jython и IronPython не имеют GIL. GIL делает однопоточные программы быстрыми. Операциям ввода/вывода GIL обычно не мешает. GIL позволяет легко интегрировать непотокобезопасные библиотеки на C, благодаря GIL у нас есть много высокопроизводительных расширений/модулей, написанных на C. Для CPU зависимых задач интерпретатор делает проверку каждые N тиков и переключает потоки. Таким образом один поток не блокирует другие. корутины - потоки между которыми переключает контекст программы в GIL чем и достигается конкурентность просто потоки выполняют задачу без конкурентности в питоне 3 корутины - потоки для asyncio, которые сэкономят времени на выполнении I/O операций

Alex- Автор вопроса
Oleksii Ovdiienko
Краткие сведения о GIL: Одновременно может выполн...

> Одновременно может выполняться один поток. Нет.

Alex
> Одновременно может выполняться один поток. Нет.

> Одновременно может выполняться один поток. чушь собачья

Alex- Автор вопроса
Oleksii Ovdiienko
ок, ты взломал GIL или свой написал?

Например гил отпускается на IO-задачах.

Oleksii Ovdiienko
ок, ты взломал GIL или свой написал?

нет, внезапно те потоки которые не захватывают GIL могут выполняться параллельно (если аппаратура позволяет)

Alex
нет, внезапно те потоки которые не захватывают GIL...

Для этого только надо аффинити вырубать, не?

Alex
нет, внезапно те потоки которые не захватывают GIL...

если бы в питоне GIL разрешал паралельно работать с одным объектом, то получали бы часто race condition

Alex
а при чем тут аффинити?

Притом, что процесс припинен к ядру, то есть ничего реально в параллель на других ядрах не запускается, пока он выставлен

Nikolay Markov
Притом, что процесс припинен к ядру, то есть ничег...

только с чего ты взял что интерпретатор выставляет аффинити по-умолчанию?

Alex- Автор вопроса
Oleksii Ovdiienko
если бы в питоне GIL разрешал паралельно работать ...

Ну да. Или по-твоему в той же джаве гонок данных быть не может?

Alex
только с чего ты взял что интерпретатор выставляет...

Ну, раньше это точно так было, потому что параллельный расчёт тензоров на нумпи начинался с отпускания этого самого аффинити, несмотря на то, что в потоках не питонокод

Alex- Автор вопроса
Oleksii Ovdiienko
если бы в питоне GIL разрешал паралельно работать ...

Еще один момент про многопоточность в питоне - если тебе прям она нужна "честная" без гил, то ты можешь этого добиться через сишные модули-расширения. Вот по-моему всякие нампаи таким занимаются.

Nikolay Markov
Ну, раньше это точно так было, потому что параллел...

а напомните основа реализации мат. библиотек не С часом? а не на С расширениях можно обходить гил и считать формулы быстрее?

Oleksii Ovdiienko
а напомните основа реализации мат. библиотек не С ...

мы вообще не про это. Аффинити никак не связано с гилом, это фишка ОС

Alex- Автор вопроса
Oleksii Ovdiienko
а напомните основа реализации мат. библиотек не С ...

Опять же, ускорение выполнения кода это большая тема и, насколько знаю, параллельное выполнение кода это не первый способ который должен рассматриваться. В крайнем случае CPUbound задачи можно расшарить между множеством процессов.

Oleksii Ovdiienko
Краткие сведения о GIL: Одновременно может выполн...

сорри, но примерно все перечисленные пункты неверные

Nikolay Markov
Ну, раньше это точно так было, потому что параллел...

нууу было бы крайне странно если бы интерпретатор пытался заигрывать с аффинити без контроля разработчика. поэтому вероятность что одна из веселых датасайентистских зависимостей это проделывала куда более высокая.

Alex
нууу было бы крайне странно если бы интерпретатор ...

вполне может быть. Но вообще это был бы хитрый ход - формально нет смысла запускаться *без* аффинити, потому что и так в 90% случаев параллелиться ничего не будет из-за GIL. А без него заимеем проблемы с когерентностью кэшей на ядрах и оверхед на системном шедулере

Oleksii Ovdiienko
Краткие сведения о GIL: Одновременно может выполн...

> Jython и IronPython Так протухло же! Можно выносить

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта