LINUX.ORG.RU

Многопоточный питон, PEP 554

 ,


1

4

Как вы могли знать, уже два года идет вялотекущий перевод питона на поддержку независимых интерпретаторов в одном процессе.

https://github.com/ericsnowcurrently/multi-core-python
https://www.python.org/dev/peps/pep-0554/

По ходу дела всплывают спящие баги, которые были в интерпретаторе годами, но их никто не исправлял, потому что они не проявлялись до этого. Постепенно глобальные переменные в интерпретаторе вычищаются вилкой - можно ожидать, что через годик-другой реализацией независимых интерпретаторов в одном процессе можно будет пользоваться.

Теперь главный вопрос: зачем? PEP 554 предлагает обращаться за помощью к каналам, как в Go, но:
- каналы как средство взаимодействия потоков убоги даже в Go;
- в питоне уже есть multiprocessing, который по сути и есть развитая идея каналов с возможностью прокинуть в обе стороны вызов функции и запрос атрибутов объекта, вплоть до итераторов, но не более того.

Для людей, которые уже готовы отвечать «ну дык есть же многопроцессы, есть форк на никсах - вот и используйте их», напомню, что реализация форка процесса на уровне ОС-и в действительности мало помогает многоПРОЦЕССовости питона - машем ручкой сборщику мусора, который передергивает счетчики ссылок:
https://instagram-engineering.com/dismissing-python-garbage-collection-at-ins...

>>> import os, sys, gc
>>> len(gc.get_objects())
6888
Это весьма эффективная модель сборки мусора... если у вас ровно один процесс.

Допустим, у нас уже есть несколько независимых потоков интерпретатора. Логичное желание - придумать какие-то эффективные модели взаимодействия интерпретаторов, которыми кто-то захочет пользоваться.
Примитивные ячейки данных (вроде многопоточного bytearray или других настраиваемых структур) довольно бесполезны, потому что мы же пользуемся питоном для того, чтобы взмыть вверх по абстракциям. Если же мы надумаем передать через подобнюу структуру хотя бы элементарную функцию, вроде

def hello():
    return "hello world"
то окажется, что объект строки и объект функции сидят в другом интерпретаторе, а сборщик мусора принципиально не умеет работать более чем в одном потоке, потому просачивание объекта из одного потока в другой вызывает катастрофические последствия.

Можно замутить атомарные операции на питоне, которые будет писать сам пользователь для описания превращений сложных структур, но есть проблема с побочными эффектами и гарантией потокобезопасности, потому что:
- любая функция в питоне использует все вышестоящие контексты, а также имеются замыкания, которые могут использовать свои собственные контексты;
- в CPython довольно сложно понять, работает ли функция с побочными эффектами или без онны. Речь не только про код на питоне, но еще и про код на си.

Для решения проблемы со стандартными бибиотеками и сборщиком мусора сообразительные люди довольно быстро придумали Jython, позже - IronPython, а потом и PyPy. Все три реализации привязывают вас к соответствующей среде выполнения, и это неприкольно даже несмотря на возможность выйти из них в расширения на C или других языках - проще написать уже всё на крестах или жабе, чем морочиться с пирамидами языков.

В итоге, на текущий момент, многопоточная разработка сводится к настройке внешних по отношению к питону потоков, как то сделано в NumPy, а потому разработать отзывчивый GUI на одном питоне не получится, например.

Кто-то видит свет в конце тонеля? Или же это предсмертные видения?

★★★★

Ответ на: комментарий от WitcherGeralt

Уровень надёжности RabbitMQ в 99.9% будет сильно превосходить всю остальную ифраструктуру.

Ставить надо? Следить надо? Обновлять надо?

Не скатывайся до уровня поттеринга.

anonymous
()
Ответ на: комментарий от byko3y

В 2019 компьютеры стали по другому принципу работать? Питон или жаба стали каким-то другим? Разработка распределенных систем всегда была дороже и геморнее

Поздравляю с разморозкой. Облака и контейнеризации уже несколько лет как окончательно закрепились в качестве индивидуального стандарта. Ты сильно отстал от прогресса и откровенно некомпетентен в вопросе.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ставить надо? Следить надо? Обновлять надо?

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

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Поздравляю с разморозкой. Облака и контейнеризации уже несколько лет как окончательно закрепились в качестве индивидуального стандарта. Ты сильно отстал от прогресса и откровенно некомпетентен в вопросе.

Индустриального стандарта? В какой индустрии? Индусостроении? Есть конкретная задача, есть инструменты ее решения, они могут подходить лучше, могут подходить хуже. «Мы будем использовать, потому что все используют» - это, конечно, удобно, но беда в том, что при помощи контейнеров «все» решают проблемы. которых у них без контейнеров не было.
Истинная причина распространения контейнеров заключается в... заключается в... барабанная дробь.. в унификации инструментов администрирования. Как написал Беня Голуб:
«The technology was not accessible/useful for developers, containers were not portable between different environments, and there was no ecosystem or set of standard containers. Docker's initial innovation was to address these issues, by providing standard APIs that made containers easy to use, creating a way for the community to collaborate around libraries of containers, working to make the same container portable across all environments, and encouraging an ecosystem of tools.»

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

Теперь, внимание - вопрос: какое это отношение имеет к нашему треду про питон? Запусти распределенный сервис на контейнерах, запусти распределенный сервис без контейнеров - ты получаешь одинакового рода геморрой, а именно - написание и поддержка распределенного сервиса, большее кол-во точек отказа, пусть даже эти точки отказа и базируются на стабильном софте.

И я напомню, что тред у нас про многопоточный питон, ты же пытался убедить меня в чем-то вроде «многоинтерпретаторное приложение на питоне не нужно - лучше поднять инфраструктуру на контейнерах».

byko3y ★★★★
() автор топика
Ответ на: комментарий от WitcherGeralt

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

Во-о-от... Нужно либо иметь такого админа, либо нанять, либо аутсорсить эту задачу. А теперь сравни это со standalone-приложением, которое можно просто запустить на любой совместимой ОС-и.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

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

Чо эта? Городить своё управление потоками проще, чем использовать готовый функционал ос?

Горсть независимых служб требует настройки и обслуживания поверх требуемой для настройки единственной службы

И что ты с ними собрался делать? Запускать/перезапускать/останавливать? Что собрался конфигурировать? Доступ с бд? А пацаны распиливают монолиты, говорят вообще норм.

менеджер очереди нужно настраивать

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

crutch_master ★★★★★
()
Ответ на: комментарий от byko3y

А теперь сравни это со standalone-приложением, которое можно просто запустить на любой совместимой ОС-и.

Понятно. Просто разворачивать сложна и не охота. Так бы лучше и сказал, без выдумывания всякой херни.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от anonymous

А может быть даже к python 5, потому что 4 сразу не получится, и решат переделать еще разок заново.

anonymous
()
Ответ на: комментарий от WitcherGeralt

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

Работы оказалось столько, что требуется админ.

А multiprocessing хуяк-хуяк и готово. Обновляется вместе с питоном, отдельно поддержки не требует.

Но геральту multiprocessing не моден. Сам знаешь, куда пройти?

anonymous
()
Ответ на: комментарий от crutch_master

В js есть worker его можно завернуть в async будет многопоточность.

Да, недавно в стабильные переехало. А вот питон отстает в этом плане.

byko3y ★★★★
() автор топика
Ответ на: комментарий от crutch_master

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

Городить своё управление потоками проще, чем использовать готовый функционал ос?

Зачем городить свое управление потоками?

Горсть независимых служб требует настройки и обслуживания поверх требуемой для настройки единственной службы

И что ты с ними собрался делать? Запускать/перезапускать/останавливать? Что собрался конфигурировать? Доступ с бд?

Разраб сделал новую версию софта. Что с ней делать? Ведь на питоне пишут обычно не для того, чтобы «раз и навека». Один кусок системы работает на одной версии, второй кусок на другой. Ой, тут хорошая фича появилась в менеджере, давайте его обновим... ой, не получилось обновить, давайте откатми. Ой, старая версия не поднимается.

А пацаны распиливают монолиты, говорят вообще норм.

В СНГ много чего распиливают - главное чтоб источник бабла был, а желающие распилить найдутся.
Есть люди, которые систему из микросервисов собирают в монолит, как ни странно. Проектировалось жи на перспективу, на рост, но реальной потребности масштабироваться у большинства нет или в ближайшее время не будет, а расходы уже уровня бигдаты.

byko3y ★★★★
() автор топика
Ответ на: комментарий от crutch_master

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

Во-о-от... Нужно либо иметь такого админа, либо нанять, либо аутсорсить эту задачу. А теперь сравни это со standalone-приложением, которое можно просто запустить на любой совместимой ОС-и.

Просто разворачивать сложна и не охота. Так бы лучше и сказал, без выдумывания всякой херни.

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

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

Разраб сделал новую версию софта. Что с ней делать?

Деплоить как обычно.

Ой, тут хорошая фича появилась в менеджере, давайте его обновим... ой, не получилось обновить, давайте откатми. Ой, старая версия не поднимается.

Это вообще что за цирк?

Есть люди, которые систему из микросервисов собирают в монолит, как ни странно. Проектировалось жи на перспективу, на рост, но реальной потребности масштабироваться у большинства нет или в ближайшее время не будет, а расходы уже уровня бигдаты.

Расходы тут совершенно не от архитектуры, а от «на перспективу» и кучи не нужного, там где можно без этого.

crutch_master ★★★★★
()
Ответ на: комментарий от byko3y

А когда дядя узнает, что ему нужно за его счет нужно сделать для разработки и поддержки системы, то он может и спросить.

Оно по поддержке ничем особо не отличается от монолита. Плюс алерт в заббикс на раббит и всё. А если контора на этом экономит, то в раббит они упрутся только в случае исключительного жопоголовия разработчиков.

crutch_master ★★★★★
()
Ответ на: комментарий от byko3y

поколение, которое не умеет работать … и не понимает … но помнит напамять все команды …

Если присмотреться, весь софт за счёт этого и растёт – вчерашнее поколение из существующих тогда микрокирпичиков собрало миликирпичи, которые нынешнее поколение поклеило в кирпичи, которые следующее будет использовать для сооружения килокирпичей, и т.д. На каждом этапе знать о позапрошлых компонентах – малоэффективно. (1) Сие непременно приводит к уменьшению со временем производительности большей части софта(это будет нужно ниже).

какое это отношение имеет к нашему треду про питон

очевидно же – что бы там не говорили оптимисты, многоядерных процессоров у нас нет. Есть несколькоядерные. И каналы связи между ними, скорости обратно пропорциональной возможностям расширения. Учитывая это, (1), и экспоненциальный рост объёмов доступной информации, написание приемлемой производительности «одномашинной» реализации софта есть мероприятие весьма рискованное. Посему, следует сразу предпочесть массово распределяющийся софт. Следовательно, многопоточность не нужна.

Конечно, так оно выжрет больше электричества. Но альтернатива – программисты, умеющие угадывать аппаратные требования будущего софта. Это редкие существа, с довольно дорогим уходом. Опять же выбор очевиден.

DonkeyHot ★★★★★
()
Ответ на: комментарий от crutch_master

Разраб сделал новую версию софта. Что с ней делать?

Деплоить как обычно.

Не знаю, что такое «как обычно». Ждать завершения операций, сносить все контейнеры и координатора, и накатывать всё заново?

Ой, тут хорошая фича появилась в менеджере, давайте его обновим... ой, не получилось обновить, давайте откатми. Ой, старая версия не поднимается.

Это вообще что за цирк?

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

Расходы тут совершенно не от архитектуры, а от «на перспективу» и кучи не нужного, там где можно без этого.

Контейнеры в продакшене - это и есть то самое «на перспективу». Я не спорю, что контейнеры очень удобны для тестирования. Потестировал - всё, пускаешь в продакшн безо всяких лишних сущностей. Людям контейнеры в продакшене просто не нужны, но рынок завален индусами, которые не умеют ничего, кроме докера с CI/CD, так что заказчики жрут что дают. Заказчики ведь далеко не все эксперты по архитектуре компьютерных систем.

byko3y ★★★★
() автор топика
Ответ на: комментарий от crutch_master

Оно по поддержке ничем особо не отличается от монолита. Плюс алерт в заббикс на раббит и всё. А если контора на этом экономит, то в раббит они упрутся только в случае исключительного жопоголовия разработчиков.

Нет, ты не понял идеи. У тебя нет забикса, у тебя нет кролика, у тебя нет админа. Тебе нужно нанять админа, который настроит зацев-кроликов с контейнерами, и будет периодически их обновлять.
Просто напишем свою операционную систему.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

Ждать завершения операций, сносить все контейнеры и координатора, и накатывать всё заново?

Запускают новый сервис. Старый сервис просто перестаёт получать сообщения из очереди и дохнет. Новый подхватывает поток данных. Всё еще проще, чем деплоить монолит.

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

А при чём тут микросервисы и бардак в версиях?

Контейнеры в продакшене - это и есть то самое «на перспективу».

Да, как будто их заставляют использовать.

crutch_master ★★★★★
()
Ответ на: комментарий от byko3y

Нет, ты не понял идеи. У тебя нет забикса, у тебя нет кролика, у тебя нет админа. Тебе нужно нанять админа, который настроит зацев-кроликов с контейнерами, и будет периодически их обновлять.

Но если есть сервак (любой) и серверное приложение то полюбому нужен забикс или какой-то мониторинг + админ. Мы же не рассматриваем шаред хостинг и лендинг с гостевухой, хотя даже там надо мониторить.

crutch_master ★★★★★
()
Ответ на: комментарий от byko3y

В СНГ много чего распиливают - главное чтоб источник бабла был, а желающие распилить найдутся.

Пилят не только на просторах СНГ, но и в других странах. США, ЕС, КНР не исключение. Пилили в прошлом, пилят в настоящем, пилить будут в будущем.

anonymous
()
Ответ на: комментарий от byko3y

и будет периодически их обновлять

Представляешь, даже ссаный вордпресс с опенкартом надо кому-то периодически обновлять. Написал & забыл это для совсем бросового дерьма.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 2)
Ответ на: комментарий от DonkeyHot

Если присмотреться, весь софт за счёт этого и растёт – вчерашнее поколение из существующих тогда микрокирпичиков собрало миликирпичи... На каждом этапе знать о позапрошлых компонентах – малоэффективно. (1) Сие непременно приводит к уменьшению со временем производительности большей части софта(это будет нужно ниже).

По росту абстракций согласен, причина роста абстракций не раскрыта (напомню, что лиспу уже полвека).

очевидно же – что бы там не говорили оптимисты, многоядерных процессоров у нас нет. Есть несколькоядерные

Сейчас для захудалого серверка иметь 20+ ядер и полсотни потоков - норма. Больше не делают не потому, что нельзя, а потому что невостребовано - слишком мало технологий способны давать прирост за счет параллелизации, полученной путем пожертвования однопоточной производительностью.

экспоненциальный рост объёмов доступной информации

А типа производительность техники стоит на месте, что ли?
Софт нынешний - говно, да, согласен, это и есть единственная обоснованная причина. Сэкономили в одном месте - вылезло боком в другом. Тут важно соблюсти баланс.
В итоге вывод

написание приемлемой производительности «одномашинной» реализации софта есть мероприятие весьма рискованное

выглядит слишком радикальным и необоснованным для большинства задач простых смертных людей (а не корпораций с миллиардными оборотами).

Конечно, так оно выжрет больше электричества. Но альтернатива – программисты, умеющие угадывать аппаратные требования будущего софта.

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

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

Мне не интересно обсуждать, а тем более доказывать очевидные вещи.

«Инфраструктура на контейнерах» безгеморройна. Наоборот одни плюсы.

WitcherGeralt ★★
()
Ответ на: комментарий от crutch_master

Запускают новый сервис. Старый сервис просто перестаёт получать сообщения из очереди и дохнет. Новый подхватывает поток данных. Всё еще проще, чем деплоить монолит.

Ты не можешь мешать версии - это рождает проблемы и это уже не «просто как обычно». То есть, тебе нужно убить все сервисы, полностью остановив на какое-то время обработку запросов, а потом поднять сервисы новой версии.

А при чём тут микросервисы и бардак в версиях?

Ну это одна из любимых фишек докерастов - тянуть старые версии софта до последнего. Эта культура породила бездарнейших кодеров, изучающих язык по анонсу новых фич, которые, например, завязывают софт на минорной версии питона, то есть: на 3.6.0 работает, на 3.6.4 уже нет, и на 3.5 тоже не работает.

Контейнеры в продакшене - это и есть то самое «на перспективу».

Да, как будто их заставляют использовать.

Как будто те, кто их проектируют, знают альтернативы. Рынок завален инженерами с синдромом утёнка.

byko3y ★★★★
() автор топика
Ответ на: комментарий от crutch_master

Но если есть сервак (любой) и серверное приложение то полюбому нужен забикс или какой-то мониторинг + админ. Мы же не рассматриваем шаред хостинг и лендинг с гостевухой, хотя даже там надо мониторить.

Кодер и будет админом. Запустил приложение - оно работает. У людей простые задачи, это не «24/7 availability highload bigdata», кому-то и сутки оффлайна - не проблема.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

Ты не можешь мешать версии - это рождает проблемы и это уже не «просто как обычно».

Чо эта? Был метод версии n, его пофиксили, стал версии n+1. Тут тоже самое, только метод - отдельное приложение и лучше изолированно от всего остального.

crutch_master ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Я про серьёзную разработку говорю, а если у вас лаже админов нет, к вам это не относится.

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

byko3y ★★★★
() автор топика
Ответ на: комментарий от WitcherGeralt

Мне не интересно обсуждать, а тем более доказывать очевидные вещи.
«Инфраструктура на контейнерах» безгеморройна. Наоборот одни плюсы.

Вот, помаши Библией еще напоследок. Для фанатов докера простая попытка обсудить альтернативы - ересь.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

Это тред про питон, здесь нет серьезных разработок, здесь есть только наспех написанные наброски или малокритичные инструменты.

Да как так, пистон это же лучший язык. Мы все знаем, что на нём пишут такой хайлоад, что все тёлки текут.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Был метод версии n, его пофиксили, стал версии n+1. Тут тоже самое, только метод - отдельное приложение и лучше изолированно от всего остального.

Глухая изоляция часто дает потерю производительности выполнения и разработки, а в некоторых задачах такая изоляция в принципе недостижима.
Тупо «вызвать функцию в отдельном процессе» можно средствами одного питона без дополнительных телодвижений.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

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

Она там не то, чтобы сильно большая, даже если гонять json. Всё зависит от упоротости разработчиков. Ну кому-то придёт в голову строковые функции типа replace вынести в микросервис, да.

Тупо «вызвать функцию в отдельном процессе» можно средствами одного питона без дополнительных телодвижений.

Вопрос стоит шире, чем просто тупо вызвать функцию.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Да как так, пистон это же лучший язык. Мы все знаем, что на нём пишут такой хайлоад, что все тёлки текут.

Инстаграм плачет кровавыми слезами, отключает сборщик мусора и убивает процессы питона через регулярные интервалы. Гугл нанял Гвидо, но даже объединенные лучшие умы из царства питона не смогли заставить код бегать быстро - в итоге Гугл сделал Go.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

Инстаграм плачет кровавыми слезами, отключает сборщик мусора и убивает процессы питона через регулярные интервалы. Гугл нанял Гвидо, но даже объединенные лучшие умы из царства питона не смогли заставить код бегать быстро - в итоге Гугл сделал Go.

А ты не хочешь сделать тред об этом? Надо сделать так, чтобы можно было донатить за хорошие набросы.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Она там не то, чтобы сильно большая, даже если гонять json. Всё зависит от упоротости разработчиков. Ну кому-то придёт в голову строковые функции типа replace вынести в микросервис, да.

Чем больше микросервис изолирован, тем больше ты осознаешь его бесполезность. Простые бесполезные функции замечательно изолируются, распределяются - прям как в туториалах. А когда дело доходит до реальных задач, то выясняется, что небрежно разбитые пять микросервисов имеют производительность одного монолита.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

Ладно, попробую с вычислениями регрессии из scipy.
У меня был парсер большого количества xlsx файлов, который писал в GUI, какой файл обрабатывается, какой % завершён. GUI был в main, парсер в треде. Фризов не замечал.

Shadow ★★★★★
()
Ответ на: комментарий от byko3y

Я намекаю, что на одном однопоточном ядре фризов не видно - значит, потокам такты процессора выделяются не смотря на «легкость» или «тяжесть» выполняемых задач.

Shadow ★★★★★
()
Ответ на: комментарий от byko3y

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

Так они и не должны иметь какую-то большую производительность. Это про непрерывную интергацию/масштабирование/распределённость/управление проектом/заменяемость компонентов и т.д. Можно отдать микросервис на оутсорц. Кусок монолита хрен ты отдашь на отусорс. Можно выносить микросервисы на отдельное железо. С куском монолита хрен ты что-то такое сделаешь. Да, в сумме нагрузки на железо будет столько же или больше, но от этого есть и свои полюшки.

crutch_master ★★★★★
()
Ответ на: комментарий от anonymous

Пилят не только на просторах СНГ

Да-да-да. Вопрос только в том, сколько на дело остаётся. И тут всё видно по результатам.

Shadow ★★★★★
()
Ответ на: комментарий от crutch_master

В js есть worker его можно завернуть в async будет многопоточность.

Не путай оксирацетам с оксибутиратом. Worker — явление сугубо браузерное (и со своими ограничениями), а async/await — стандарт для любых рантаймов.

rebforce
()
Ответ на: комментарий от Shadow

Ладно, попробую с вычислениями регрессии из scipy.

Оно может отпускать GIL - получается многотопочность на уровне голого C.

У меня был парсер большого количества xlsx файлов, который писал в GUI, какой файл обрабатывается, какой % завершён. GUI был в main, парсер в треде. Фризов не замечал.

Ввода от пользователя почти нет (GUI->python), вывод пользователю тоже минимален. При этом, чтение файла и распаковка делается вне GIL (пруф последнего в Modules/zlibmodule.c -> zlib_compress_impl).
Это то, о чем я писал в исходном посте - лучше всего питон параллелизуется вне кода на питоне.

byko3y ★★★★
() автор топика
Ответ на: комментарий от WitcherGeralt

Расскажи это ютубу, инстаграму и дропбоксу, например

Если бы ютьюб и дропбокс производили загрузку-скачивание через питон, то мы бы о них не знали. Ютьюб на питоне гоняет сложную в написании и постоянно меняющуюся, но простую в выполнении логику, а ресурсоемких процессов питон не касается.
Ссылка по инстаграмму - в моем стартовом посте треда.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

У тебя в голове какая-то каша.

Ютьюб на питоне гоняет сложную в написании и постоянно меняющуюся, но простую в выполнении логику

Допустим, вот только это в любом случае серьёзная разработка, приносящая реки денег.

а ресурсоемких процессов питон не касается

Смешно же, задумайся на минуту о нагрузках в ютубе.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Ютьюб на питоне гоняет сложную в написании и постоянно меняющуюся, но простую в выполнении логику

Допустим, вот только это в любом случае серьёзная разработка, приносящая реки денег.

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

Смешно же, задумайся на минуту о нагрузках в ютубе.

На питон ложится малая доля нагрузки.

byko3y ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.