The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В CPython появится возможность отключения глобальной блокировки интерпретатора

10.01.2023 23:17

Опубликовано предложение по расширению языка Python - PEP-0703, в котором рассматривается добавление режима сборки CPython без глобальной блокировки интерпретатора (GIL, Global Interpreter Lock). Предложение сводится к оставлению по умолчанию GIL, но добавлению для его отключения сборочной опции "--without-gil". Спецификация пока находится на стадии черновика, подлежащего обсуждению. Новый режим позволит решить проблему с распараллеливанием операций на многоядерных системах, вызванную тем, что глобальная блокировка не допускает параллельное обращение к разделяемым объектам из разных потоков.

По умолчанию отключение GIL нецелесообразно в связи с накладными расходами, связанными с изменениями в сборщике мусора, системе управления памятью и примитивах для организации блокировок. Например, из-за использования подсчёта ссылок для изоляции потоков наблюдается заметное снижение производительности однопоточных сценариев (в тестовом наборе pyperformance на 10%). При этом отключение GIL может потребоваться в научных вычислениях, для которых отсутствие распараллеливания является более серьёзной проблемой, чем линейная скорость выполнения кода. Другой проблемой является несовместимость на уровне ABI сборок CPython с GIL и без него.

  1. Главная ссылка к новости (https://discuss.python.org/t/p...)
  2. OpenNews: Представлен Pyston-lite, JIT-компилятор для штатного Python
  3. OpenNews: Стратегия параллельного поддержания веток Python 2 и Python 3 оказалась ошибочной
  4. OpenNews: Выпуск языка программирования Python 3.11
  5. OpenNews: Проект по интеграции поддержки многопоточности в Python и релиз PyPy 1.3
  6. OpenNews: Представлен pypy-stm, интерпретатор Python с поддержкой распараллеливания на многоядерных системах
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58459-python
Ключевые слова: python, gil
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (74) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:35, 10/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    держи, брат аноним, как это собираются воплощать и чем придется заплатить Removi... большой текст свёрнут, показать
     
     
  • 2.15, Аноним (15), 01:32, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>immortalization

    Так и не понял что это?

     
     
  • 3.18, Аноним (18), 02:35, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    питонисты изобрели бессмертие
     
     
  • 4.43, Аноним (43), 09:14, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    После антигравитации. :)
     
     
  • 5.79, амоним (?), 02:02, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    потому что 42
     
  • 5.85, Аноним (-), 09:11, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > После антигравитации. :)

    Да нахрен вашу антигравитацию, варпдрайв дайте.

     
  • 4.83, Аноним (-), 08:57, 12/01/2023 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 4.84, Аноним (-), 09:10, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > питонисты изобрели бессмертие

    А счастье у них есть?

     
  • 4.86, Аноним (-), 09:55, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > питонисты изобрели бессмертие

    Но работает только до выхода следующей версии питона :)

     
  • 3.55, Zulu (?), 13:34, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Так и не понял что это?

    Это PEP 683

     
  • 2.16, Аноним (15), 01:37, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    После прочтения подумал что однопоток обычно нужен там, где входящие данные могут сильно меняется откуда угодно: может подумать как сделать больше immutable структур? Но про это не слова.
     
  • 2.22, Аноним (22), 03:08, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Превосходно! Python опять меняет свой API без обратной совместимости. На месте комитета стандартизации, я бы вообще добавлял по 64 ключевых слова в месяц и каждые пол года менял API без обратной совместимости
     
     
     
    Часть нити удалена модератором

  • 4.80, freehck (ok), 05:30, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Толку-то её читать, если питонисты поголовно грешат тем, что реагируют на баги правкой документации, а не кода.

    Доков-то написано много, вот только какой с них прок: ты делаешь всё по доке, оно не работает, ты тратишь время на дебаг и заведение таски на баг-трекере... И питонисты правят документацию, что тебе как козе пятая нога, потому что твой код написан по доке, и потому для тебя баг как был не исправлен, так и остаётся.

    Ну а что взять с питонистов. Язык написан прикладниками для прикладников, и культура там соответствующая.

     
     
     
     
    Часть нити удалена модератором

  • 7.94, Sem (??), 17:17, 13/01/2023 [ответить]  
  • +/
    А можно хотя бы намек, о чем речь? Что за баги правились исправлением документации?
     
     
  • 8.98, freehck (ok), 20:33, 13/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да я бы с радостью, только я уже не помню Так что можете рассматривать данный т... большой текст свёрнут, показать
     
  • 3.29, Аноним (29), 07:00, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > я бы вообще добавлял по 64 ключевых слова в месяц и каждые пол года менял API без обратной совместимости

    Уже есть такой язык, rust называется.

     
  • 3.44, Дон Педро (?), 09:29, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ABI != API
     
  • 3.66, Вы забыли заполнить поле Name (?), 16:18, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Расширения на с что-ли пишешь?
     

  • 1.2, pashev.ru (?), 23:43, 10/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > При этом отключение GIL может потребоваться в научных вычислениях

    В научных исследованиях лучше, конечно, Фортран с ОпенМП.

     
     
  • 2.7, Аноним (7), 00:26, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Лучше, но почему-то эти учёные постоянно хотят писать на питоне с NumPy, Pandas, Jypiter и чтобы всенепременно удобно было. Наверное, они все поголовно тупые. Им бы туда пару паше-вру заслать, чтобы научили уму-разуму.
     
     
  • 3.9, Аноним (9), 00:47, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Наверное, они все поголовно тупые

    Ну вообще учёный не обязан быть хорошим системным программистом знающим про fork и виртуальную память.

     
     
  • 4.31, Бывалый смузихлёб (?), 07:24, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С каких пор любой, кое-как знающий хоть какой-то ЯП вдруг стал учОным ?

    Или технари по образованию, с учёной степенью, не имеют права изучать ЯП ?

    Это уже к разговору о том, что именно учёные обычно очень неплохо знают свои инструменты в отличие от школьников или студентов вузов / колледжей, которых, почему-то, тоже именуют учеными

     
  • 3.14, Аноним (15), 01:25, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Лично я знаю только одного который использует активно Питон, но на пару с Фортраном. Остальные или Матлаб или D (язык такой) или C++ или Java (больше всего).

    Выборка у меня конечно не очень.

     
     
  • 4.33, iiiypuk (?), 07:27, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Мог бы не уточнять про D, все его прекрасно знают, потому что на нём написан свободный движок OpenMW, великой TES 3: Morrowind
     
     
  • 5.51, Аноним (51), 11:40, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Там D давно уже отковыряли
     
  • 5.95, Sem (??), 17:25, 13/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я знаю про D, а вот про OpenMW впервые услышал.
     
  • 4.40, Аноним (40), 09:00, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Девушка работавшая в организации занимающаяся биологическими исследованиями рассказывала что они на R считают и Python

    И не в России...

     
     
  • 5.54, анонна (?), 12:30, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    R - статистика. Питон - расчет. питон просто удобен простотой написания небольших расчетных скриптов.
     
  • 5.57, Аноним (57), 14:17, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Девушка работавшая в организации занимающаяся биологическими исследованиями

    звучит как "бордель под прикрытием" :-)

     
  • 2.23, Аноним (22), 03:10, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Почему именно Fortran и OpenMP?
     
     
  • 3.37, Аноним (37), 08:34, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Почему именно Fortran и OpenMP?

    Патамучта так повелось: язык простой, ПОНЯТНЫЙ, для математики применяется издавна.

     
  • 3.48, Аноним (48), 10:45, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Потому что легаси днищще.
     
     
  • 4.52, pashev.ru (?), 11:47, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    http://git.pashev.ru/mendeleev/tree/mendeleev.f90
     
  • 3.62, Аноним (62), 15:01, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Потому что на Fortran можно написать Scheme, и дальше уже писать нормально.

    https://gitlab.com/Lockywolf/schemetran

    Есть, кстати, ещё компилятор Схемы в Фортран под тем же названием:

    https://gitlab.com/codetk/schemetran

     
  • 2.34, Аноним (34), 07:46, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Нет. Только С с самостоятельно составленным математическим ПО.
     
     
  • 3.72, анонна (?), 17:56, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    си прекрасно подходит для написания математических прог, но более многословен чем питон. хотя.... это от задачи зависит. но простые скрипты с одной формулой расчета проще на питоне написать. а вот комбайны с местом ввода и замены данных(особенно констант и пр) лучше на си.
     
  • 2.47, Аноним (48), 10:45, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Только учёные про это почему-то не в курсе. Не в курсе почему?
     

  • 1.3, Аноним (3), 00:07, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Теоретически это поможет мне с моими 100+ тредами (асинхронными, динамически выделяются по мере необходимости), но жор выглядит неприятно (он и так становится нездоровым). Зависит от того, сколько гигабит можно выжать из текущего однозадачного питона, может оказаться оправдано. Возможность временно отключить в рантайме была бы прикольней.
     
  • 1.4, noize (ok), 00:09, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    всё нормально, знающие люди делают. PEP предложен Sam Gross, человеком, который много лет уже пилит nogil.
    Посмотрим что в итоге получится. Я ставлю на то, что GIL из CPython никто не выпилит. Скорее всего сделают возможность отключения на уровне интерпретатора флагами запуска
     
     
  • 2.10, Аноним (9), 00:50, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Скорее всего сделают возможность отключения на уровне интерпретатора флагами запуска

    Придётся две версии примитивов синхронизации держать, для thread safe и для однопоточного запуска либо добавлять if что скажется на производительности.

     
     
  • 3.12, Аноним (12), 01:04, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Питонистам не привыкать, у них вон, последние 10 лет две версии интерпретатора.
     
     
  • 4.35, Аноним (34), 07:48, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Очень любят интерпретировать. Или задач серьезных не было, или времени свободного много, или находится тот, кто согласен оплачивать.
     
  • 4.56, Аноним (56), 13:50, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    о нет, у питона больше двух интерпретаторов, как же так просчитаться, акелла промахнулся, мамка наругает
     
  • 4.67, Вы забыли заполнить поле Name (?), 16:21, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Из которых 10 лет ветка 2 не развивалась
     
     
  • 5.81, Аноним (62), 07:21, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    10 лет не ломалась совместимость.
     
  • 2.96, Sem (??), 17:31, 13/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще, ты просто новость пересказал :)
    А ребята, когда их достали GIL'ом, запилили asycio и сказали: "вот, пользуйтесь, так более правильнее на питоне будет".
     

  • 1.5, Аноним (15), 00:11, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Сделали же https://www.opennet.dev/opennews/art.shtml?num=58395 который в 10-100 раз быстрее... а здесь решили убить однопоточную производительность (на 10%) - зачем?
     
     
  • 2.6, Антон (??), 00:15, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Для коммерческой разработки нужно покупать лицензию, подходит для простых скриптов.
    Инструмент для узких задач
     
     
  • 3.13, Аноним (15), 01:20, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Так-то коммерческая разработка предполагает зарабатывание денег, поэтому не понимаю аргумента. Или нужна халява?
     
     
  • 4.17, Аноним (17), 01:57, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Деньги лучше отдать тем кто распространяет свой продукт без ограничений, а не тем кто этих денег требует.
     
     
  • 5.36, xrensgory (?), 08:12, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Деньги лучше отдать мне
     
     
  • 6.50, Аноним (48), 10:47, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ого тут у нас богатый буратино, тогда мы выехали за тобой.
     
  • 4.32, Бывалый смузихлёб (?), 07:27, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Именно что зарабатывание денег а не разбазаривание

    И, если есть возможность тратить меньше, то зачем тратить больше ?

     
  • 2.49, Аноним (48), 10:47, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это левая поставка, а сабж от производителя.
     

  • 1.8, Аноним (9), 00:45, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > При этом отключение GIL может потребоваться в научных вычислениях

    кто-то должен рассказать научным вычислятелям про fork, clone и mmap.

     
     
  • 2.68, pda (ok), 16:24, 11/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Они уже знают и используют.

    "For example, PyTorch exposes a multiprocessing-based API called DataLoader for building data input pipelines. It uses fork() on Linux because it is generally faster and uses less memory than spawn(), but this leads to additional challenges for users: creating a DataLoader after accessing a GPU can lead to confusing CUDA errors."

     

  • 1.11, Аноним (11), 01:02, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Что творят? Хейтеры последний аргумент свой потеряют же! Ну, да, кто-то ещё будет попискивать на счёт синтаксиса)
     
  • 1.27, Аноним (27), 05:41, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    На 10% просело, ну ё маё! Всегда же увеличение потоков давало кратный рост производительности.
     
  • 1.58, Аноним (58), 14:48, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    >Скупой платит дважды, тупой - трижды, лох - постоянно.

    Отключение GIL приведёт к фрагментации экосистемы на 2 ветки питона, одна с GIL, другая - без него. При этом часть пакетов будут работать только в GILless, а другая - только в GILful, а если программе нужны оба таких пакета одновременно - то изволь поднимать 2 процесса и общаться между ними через сокет. Кому это надо?

    Опыт перехода с Python 2 на Python 3 их ничему не научил. Если с 2 на 3 пакеты можно переписать автоматически через 2to3, то с GILful и GILless друг в друга переписать можно будет только ручками. Кто будет это делать?

    Нужна ОДНА ветка, в которой одновременно могут сосуществовать пакеты GILless и GILful, при этом чтобы GIL мог включаться и отключаться гранулярно.

     
     
  • 2.76, Вы забыли заполнить поле Name (?), 00:33, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Гвидо уже признал, что выпуск 3-ей версии и 2-ой одновременно было ошибкой. Вряд ли они второй раз пойдут по граблям. Это пока всего предложение, можете, кстати, поучавствовать в обсуждении.
     
     
  • 3.78, Аноним (78), 00:50, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Питон сейчас на столько раскручен, что можно в дополнение к существующей, ещё пару несовместимых по синтаксису версий выпустить. И никто не заметит.
     
     
  • 4.92, Вы забыли заполнить поле Name (?), 22:48, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Питон сейчас на столько раскручен, что можно в дополнение к существующей, ещё
    > пару несовместимых по синтаксису версий выпустить. И никто не заметит.

    Ну да. Про версию 3 также думали.

     
  • 2.82, Аноним (62), 07:24, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Отключение GIL приведёт к фрагментации экосистемы на 2 ветки питона, одна с GIL, другая - без него.

    И это отлично! Меньше питонистов -- больше писателей на нормальных языках, таких как C++ или Lisp.

     
     
  • 3.93, Вы забыли заполнить поле Name (?), 22:50, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >>Отключение GIL приведёт к фрагментации экосистемы на 2 ветки питона, одна с GIL, другая - без него.
    > И это отлично! Меньше питонистов -- больше писателей на нормальных языках, таких
    > как C++ или Lisp.

    Знал я одного такого. Притом единственным плюсом С++ он называл возможность написать на нем интерпретатор лиспа.

     

  • 1.59, Аноним (58), 14:54, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Neural network-based AI models expose multiple opportunities for parallelism.
    >The GIL makes it difficult to express inter-operator parallelism, as well as some forms of request parallelism, efficiently in Python

    Паралелизм нейросетей работает на акселераторах (включая просто CPU, для которого модели тоже JIT-компилируются в нативный код фреймворками) и на уровне питона не виден. Инференс прикладных неигрушечных нейросетей на чистом питоне может выглядит со стороны тех, кто никто нейросетями не занимался, и привлекательно, но будет чертовски медленным и жрущим до полной неюзабельности на практике. Так что этот аргумент сразу ффтопку.

     
  • 1.60, Аноним (58), 14:58, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Manuel Kroiss, software engineer at DeepMind on the reinforcement learning team, describes how the bottlenecks posed by the GIL lead to rewriting Python codebases in C++, making the code less accessible:

    Они бы и так переписали на C++. В Reinforcement Learning код вызывается очень много раз, и любые задержки умножаются на большое число, окупающее временные затраты на переписывание. При этом  в результате получается программа на C++, которую можно запускать на компах без питона и которая работает быстрее и жрёт меньше, что делает переписывание на C ещё более привлекательным.

    Напоминаю - Python -  язык для создания ПРОТОТИПОВ. Он ВСЕГДА таким был. Не надо ради гипотетической на практике неприменимой выгоды фрагментировать его экосистему.

     
  • 1.63, Омномним (?), 15:09, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Подпереть костыль костылём - это мило.
     
  • 1.65, Аноним (65), 16:11, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Почему --without-gil, привычный стиль же --no-gil?
     
  • 1.70, Аноним (70), 16:57, 11/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Есть такая профессия - питон от гила избавлять.
     
     
  • 2.77, Вы забыли заполнить поле Name (?), 00:34, 12/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Он есть - анонимам плохо, его нет - анонимам тоже плохо. Вам не угодишь.
     

  • 1.104, Аноним (104), 14:07, 16/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Например, из-за использования подсчёта ссылок для изоляции потоков наблюдается заметное снижение производительности однопоточных сценариев (в тестовом наборе pyperformance на 10%)

    Куда уже медленее чем стоковый CPython.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру