Подтвердить что ты не робот

Есть ли преимущества для запуска X86-64 Python на 64-битном процессоре в 64-разрядной ОС?

Какие преимущества существуют для запуска сборников amd64 для Python и расширений? (Множество расширений скомпилировано для amd64 здесь.) У меня есть процессор i5 и 64-разрядный Win7, поэтому кажется, что это было бы уместно. Но это также звучит так, как будто это багги, бета, неподдерживаемые и т.д.

Действительно ли это обеспечивает эффективность? В каких областях? Я буду запускать SciPy, NumPy и т.д. Иногда я получаю ошибки "из памяти" с 32-разрядным Python, а моя машина имеет 4 гигабайта ОЗУ.

Можно ли установить пакеты win32 на 64-битной базе Python, если 64-разрядная версия пакета не существует?

4b9b3361

Ответ 1

Основное обоснование использования 64-разрядного Python заключается в том, что вы можете получить доступ к более чем 2 ГБ основной памяти, например. если у вас большие диктофоны, списки или длинные строки. Это требует, чтобы на самом деле у вас было столько памяти в вашей системе, чтобы быть практичным.

Вторичным эффектом является то, что в режиме AMD64 у процессора больше регистров, поэтому полученный код может работать немного быстрее (для целых операций).

Python в 64-битном режиме на Windows, конечно, не является бета-версией или не поддерживается. Это может быть ошибкой, но только если у вас действительно есть очень большие структуры данных. 64-разрядный Python насчитывает около 15 лет (хотя и не в Windows).

Ответ 2

Такое же преимущество, как и любая другая 64-разрядная программа: много пространства процесса и доступ к большему и большему регистру (по крайней мере для модулей VM и C). Но нет, вам нужно найти 64-битные версии C-модулей.

Ответ 3

Нормальные выигрыши можно получить с помощью 64-битного кода в целом. Я не нашел каких-либо недавних тестов, но во время внедрения x64 код мог работать до 30% быстрее на 64-битной, чем на 32-битной аппаратуре x86 - этот разрыв, конечно, как-то упал с оптимизациями с момента, но вероятно, быстрее.

Кроме того, вы можете воспользоваться возможностью прозрачного использования более 4 ГБ памяти, если вам тоже понадобится.

Обратите внимание, однако, что прирост скорости в 64 бит обусловлен огромным 32-битным устаревшим ABI: enve i7, работающий в 32 бит, имеет те же 4 регистра общего назначения (и еще пару), которые были в чипе 80386 с 1987 года. И те, которые были отображены 1:1 в регистр на 8086 с 70-х годов. 64-разрядный abi вводит больше (реальных) регистров общего назначения и делает это для увеличения скорости. В противном случае 64-разрядный код просто проводит вдвое больше кэш-памяти, что делает его в других архитектурах, таких как PPC, на самом деле медленнее 32-битного кода.

Ответ 4

Я уже много лет запускаю 64-разрядный Python в Linux. Нет проблем, это не глючит. Это включает numpy. Я бы не стал беспокоиться об этом.

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

Python> sys.maxint
9223372036854775807

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

Вы получаете наибольшую выгоду при работе с очень большими объемами данных.

Ответ 5

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

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