Языки программирования

Python 3.13 уже здесь

Python 3.13 уже здесь

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

Вы почти наверняка сможете просто перейти на новую версию, и если вы не делаете что-то очень сложное, то вряд ли столкнетесь с какими-то трудностями. Конечно, если вы делали что-то очень сложное и тонкое, то вам не составит труда это исправить. Например, изменилось поведение локалей, но если вы исследуете код до такой степени, то вы знаете, что делаете. Также обратите внимание, что Python 3.8 почти на исходе.

Как человек, который редко использует интерактивную оболочку Python, тот факт, что появилась новая оболочка, почти не влияет на меня, но она красивее, я должен согласиться, и если вам не нравится предыдущая, то она все еще доступна. Если вы действительно хотите работать с Python в интерактивном режиме, используйте Jupiter.

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

Чтобы не быть голословным, в Python 3.13 все же стоит использовать потоки, если вам нужно дождаться завершения какого-то процесса - тогда одни потоки могут продолжать выполнять свои задачи, а другие приостанавливаются. Использование потоков может увеличить скорость работы программы, но только в том случае, если однопоточная версия задерживается в ожидании чего-либо. В GIL-связанном Python добавление потоков не ускоряет работу программы, привязанной к процессору. Если вы хотите ускорить программу, привязанную к процессору, то вам придется использовать несколько процессов, каждый со своей собственной копией интерпретатора Python.

Избавление от GIL позволяет программам, привязанным к процессору, работать быстрее с одной копией интерпретатора Python, используя несколько ядер. Многие говорят, что не так много приложений выиграют от использования потоков без GIL, но очевидно, что есть несколько важных приложений, которые выиграют - например, программы искусственного интеллекта. Такие программы могли бы использовать параллелизм на основе процессов, чтобы получить ускорение, но процессы не делят память и, следовательно, не делят переменные. Это делает блокировку ненужной, но также значительно усложняет взаимодействие между задачами.

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

Однако не все так хорошо. Расширения Python не поддерживают режим no-GIL автоматически, и вам нужно выяснить, нужны ли вашей программе те, которые сейчас не поддерживают.

Вероятно, более важным для рядового программиста на Python является появление JIT-компилятора. Он тоже является экспериментальным, и вы должны включить его, чтобы узнать, ускорит ли он работу вашей программы. Пока что прирост скорости описывается как «скромный», и нам предстоит увидеть, станет ли все быстрее и улучшится ли компилятор. Более важно то, что это знаменует собой изменение в том, как Python выполняет код, и будет интересно посмотреть, как это будет развиваться в будущем.

Читайте также