Какую версию python лучше использовать
Перейти к содержимому

Какую версию python лучше использовать

  • автор:

Picking a Python Interpreter (3 vs 2)¶

https://d33wubrfki0l68.cloudfront.net/3bf66d6a0daa986e254a5d7a425020b10a8aabab/d2960/_images/34484834733_5b80f65ab1_k_d.jpg

When choosing a Python interpreter, one looming question is always present: “Should I choose Python 2 or Python 3”? The answer is a bit more subtle than one might think.

The basic gist of the state of things is as follows:

  1. Most production applications today use Python 3.
  2. Python 3 is ready for the production deployment of applications today.
  3. Python 2 reached the end of its life on January 1, 2020 [6].
  4. The brand name “Python” encapsulates both Python 3 and Python 2.

Recommendations¶

The use of Python 3 is highly recommended over Python 2. Consider upgrading your applications and infrastructure if you find yourself still using Python 2 in production today. If you are using Python 3, congratulations — you are indeed a person of excellent taste. —Kenneth Reitz

  • Use Python 3 for new Python applications.
  • If you’re learning Python for the first time, familiarizing yourself with Python 2.7 will be very useful, but not more useful than learning Python 3.
  • Learn both. They are both “Python”.

If you’re choosing a Python interpreter to use, I recommend you use the newest Python 3.x, since every version brings new and improved standard library modules, security and bug fixes.

Given such, only use Python 2 if you have a strong reason to, such as a pre-existing code-base, a Python 2 exclusive library, simplicity/familiarity, or, of course, you absolutely love and are inspired by Python 2. No harm in that.

It is possible to write code that works on Python 2.6, 2.7, and Python 3. This ranges from trivial to hard depending upon the kind of software you are writing; if you’re a beginner there are far more important things to worry about.

Implementations¶

When people speak of Python they often mean not just the language but also the CPython implementation. Python is actually a specification for a language that can be implemented in many different ways.

CPython¶

CPython is the reference implementation of Python, written in C. It compiles Python code to intermediate bytecode which is then interpreted by a virtual machine. CPython provides the highest level of compatibility with Python packages and C extension modules.

If you are writing open source Python code and want to reach the widest possible audience, targeting CPython is best. To use packages which rely on C extensions to function, CPython is your only implementation option.

All versions of the Python language are implemented in C because CPython is the reference implementation.

PyPy is a Python interpreter implemented in a restricted statically-typed subset of the Python language called RPython. The interpreter features a just-in-time compiler and supports multiple back-ends (C, CLI, JVM).

PyPy aims for maximum compatibility with the reference CPython implementation while improving performance.

If you are looking to increase performance of your Python code, it’s worth giving PyPy a try. On a suite of benchmarks, it’s currently over 5 times faster than CPython.

PyPy supports Python 2.7. PyPy3 [1], released in beta, targets Python 3.

Jython¶

Jython is a Python implementation that compiles Python code to Java bytecode which is then executed by the JVM (Java Virtual Machine). Additionally, it is able to import and use any Java class like a Python module.

If you need to interface with an existing Java codebase or have other reasons to need to write Python code for the JVM, Jython is the best choice.

Jython currently supports up to Python 2.7. [2]

IronPython¶

IronPython is an implementation of Python for the .NET framework. It can use both Python and .NET framework libraries, and can also expose Python code to other languages in the .NET framework.

Python Tools for Visual Studio integrates IronPython directly into the Visual Studio development environment, making it an ideal choice for Windows developers.

IronPython supports Python 2.7. [3] IronPython 3 [4] is being developed, but is not ready for use as of September 2020.

PythonNet¶

Python for .NET is a package which provides near seamless integration of a natively installed Python installation with the .NET Common Language Runtime (CLR). This is the inverse approach to that taken by IronPython (see above), to which it is more complementary than competing with.

In conjunction with Mono, pythonnet enables native Python installations on non-Windows operating systems, such as OS X and Linux, to operate within the .NET framework. It can be run in addition to IronPython without conflict.

Pythonnet is compatible with Python 2.7 and 3.5-3.8. [5]

This opinionated guide exists to provide both novice and expert Python developers a best practice handbook to the installation, configuration, and usage of Python on a daily basis.

Какую версию Python изучать?

Если пару-тройку лет, то третью — потому-что вероятно большАя(если не бОльшая) часть библиотек и решений, перейдет на неё, за это время. Если за месяц-два планируете освоить, то 2.6\2.7 — потому-что сейчас большинство на них пишут и соответственно большинство библиотек и решений именно на нем. 🙂

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

Ну и до кучи — изучив любой из питонов, вы будете легко воспринимать, код на любых других версиях
— правда, немного почитав про отличия (их не так много, к слову).
Однако, без большого количества правильных примеров вам будет сложно прочувствовать
все прелести новых конструкций, которые появились в 3.*, по отношению к 2.6\2.7.

What version of Python should I use if I'm a new to Python?

If I’m absolutely new to Python and am literally reading about printing statements to console, variable types, collections, etc:

What version of Python should I use?

I’m aware that there is an abundance of 3rd party libraries for Python 2.6.x, but I’m scared I’ll learn some things that won’t carry over well into Python 3.

For example, in Python 3 you can use input(), in Python 2 you have to use raw_input().

Thank you very much for the information.

8 Answers 8

Python 2.6 (and 2.5, 2.4) are what you will find installed on most machines (Linux) and what you will find most code written in. Therefore I’d start with Python 2.6.

It’s really going to depend on what you want to do. Generally speaking Python 3 «isn’t ready yet», in the sense that few libraries support Python 3. This will end up greatly limiting what you can accomplish with the language as a beginner.

On the other hand, if you think you’ll be spending your time on more «pure programming» tasks as you learn your way around, then Python 3 can be a good starting point, since things like strings are wildly different in Python 3.

So, what do you want out of Python right now? Do you want to make useful things? Python 2.x. Do you want to learn about Python for the sake of learning about Python? Python 3.

Here in a year or two, Python 3 will likely start being the default choice. Until then, it’s really up to you. But you can be certain that whatever skills in Python you pick up are going to be useful in 2.x and 3. Some important things changed in Python 3, but Python 3 is still Python.

Какая версия Python самая быстрая?

12 апреля 2018 г. Archy Просмотров: 22598 RSS Обсудить

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

Использование служебной программы производительности

Главная команда Python делает многое для производительности, стоит упомянуть сайт speed.python.org, который является отличным примером с «официальными» показателями тестов CPython.

Однако существует несколько проблем:

1. Результаты достаточно сложно прочитать;

2. Они не включают в себя PyPy;

Вместо этого, вы можете скачать панель инструментов, которая запускает этот сайт при помощи команды pip install performance, после чего вы можете запустить:

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

Это отлично подходит в контексте данной статьи для официальных инсталляций Python:

  • 2.7.10,
  • 3.4.4,
  • 3.5.4,
  • 3.6.1, а также
  • 3.7 (у нас имеется бета 2).

Кроме этого, это включает PyPy(5.6.) и PyPy3 (5.4.10).

Результаты

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

Я также создал простой скрипт для получения списка файлов данных производительности и создания графиков для каждого теста. Код на GitHub.

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

Полные результаты с графиками доступны здесь:

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

Рендеринг результатов в HTML

Тест django_html использует шаблон движка рендеринга Django для создания таблицы HTML 150 х 150. Он использует классы Content и Template движка Django.

Python 3.7 на 1.19x быстрее Python 2.7, но это единственный релиз Python 3.x, который опередил Python 2.7, который я запустил.

PyPy опережает все результаты CPython, однако PyPy3 в два раза медленнее PyPy. Стоит отметить недавнее решение в Django, касаемо отказа поддержки Python 2 в Django 2.0 и выше. Это означает, что PyPy больше не поддерживается Django 2.

Время запуска

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

Обратите внимание на скачок показателей PyPy, особенно PyPy3. Мы рассмотрим, почему так произошло в конце статьи.

Криптография: crypto_paes

В данном тесте вы увидите любопытную разницу в скорости между Python 2 и 3. Почему? Crypto запрашивает большое количество расчетов, а Python 3 больше не поддерживает 32-разрядные типы чисел, только (очень) длинные числа.

Пользователи PyPy могут заметить, что PyPy3 почти в пять раз медленнее, чем PyPy!

Арифметика с плавающей точкой

«float» — это искусственное приложение арифметики с плавающей точкой, которое создаст 100 000 точечных объектов, которые вычисляют math.cos(), math.sin() и math.sqrt().

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

Регулярные выражения

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

Трудно сказать, что происходит с PyPy в данном графике. Было бы любопытно, если бы кто-нибудь прислал мне такой же результат!

Обновление: команда PyPy увидела оригинал статьи и внесла правки.

Значит, Python 3 быстрее, чем Python 2?

Именно! Практически в каждом тесте. Исключения есть только в тесте crypto_paes, где Python 3 был на 1.35 медленнее (из-за типов чисел) и в тесте python_startup медленнее на 1.39.

Медленный запуск Python 3 – это главная проблема, над которой работает основная команда CPython в версиях 3.8 и 3.9.

Помимо этих двух тестов, Python 3 в 1.2–1.3 раза быстрее по своим показателям в остальных тестах. Вы можете заметить улучшения, обновившись до Python 3.7, когда он появится на полках в этом году.

Почему PyPy такой быстрый и почему им не пользуются все?

PyPy быстрее CPython благодаря своему компилятору just-in-time. Компиляторы JIT имеют огромное преимущество, так как являются крайне эффективными при выполнении предсказуемых и повторяющихся задач. Суть наших контрольных показателей включает в себя запуск одних и тех же кусков кода несколько раз подряд для точности, ускорения приложения и снижения появлений ошибок. Здесь PyPy блистает в каждом таком тесте.

Недостаток JIT компилятора и PyPy в целом – это цена запуска. Другой недостаток – это слабая совместимость с С-расширениями. Так как Python (CPython, официальный PSF Python) написан на С, многие сторонние расширения PyPi используют этот язык. Хороший пример – Numpy, так как большая его часть написана на оптимизированном коде С. При установке numpy при помощи pip, он использует ваш локальный компилятор С и строит бинарную библиотеку для вашей среды Python для выполнения.

Так как PyPy написан на Python, множество модулей не может работать с PyPy. Так что будьте бдительны и всегда проверяйте.

Кроме этого, PyPy переживает те же проблемы, что и CPython – переход версии языка 2 на версию 3. PyPy3 до недавних пор был достаточно нестабильным, что можно заметить по контрольным показателям, где присутствуют странные несоответствия с PyPy. Также были замечены проблемы с пакетами (PyTest), отбрасывающими поддержку PyPy3, хотя эту проблему пытаются уладить.

Подведем итоги

Python 3.7 – самая быстрая официальная версия Python, при этом PyPy демонстрирует самую быструю производительность (по крайней мере, в рамках наших тестов).

Хотелось бы в будущем увидеть производительность PyPy3 даже выше, чем это делает PyPy, так как версия Python 2 используется все реже и реже.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *