Czy powinienem używać Pythona 32-bitowego czy Pythona 64-bitowego

143

Mam 64-bitową instalację win7. Czy muszę używać 64-bitowego Pythona? Jakie są różnice między 32-bitową i 64-bitową wersją Pythona? Czy różne pakiety Pythona (takie jak south, django, mysqldb itp.) Obsługują tylko 32-bitowe / 64-bitowe?

Jonathan
źródło
2
Powiązane stackoverflow.com/q/4567856/460775
EMBarbosa

Odpowiedzi:

91

Wersja 64-bitowa pozwoli pojedynczemu procesowi na użycie większej ilości pamięci RAM niż 32-bitowa, jednak może się okazać, że rozmiar pamięci podwoi się w zależności od tego, co przechowujesz w pamięci RAM (w szczególności liczby całkowite).

Na przykład, jeśli Twoja aplikacja wymaga> 2 GB pamięci RAM, więc przełączasz się z 32-bitowego na 64-bitowy, może się okazać, że Twoja aplikacja wymaga teraz> 4 GB pamięci RAM.

Sprawdź, czy wszystkie moduły innych firm są dostępne w wersji 64-bitowej, w przeciwnym razie może być łatwiej pozostać w międzyczasie na 32-bitowym

John La Rooy
źródło
13
Ahaik, nie ma 64-bitowych plików binarnych dla MysqlDB - to jest powód, dla którego trzymam się 32-bitowego Pythona.
Jochen Ritzel,
12
Czy moduły innych firm naprawdę muszą wyraźnie obsługiwać 64-bitowe?
Jonathan
8
Używam 64-bitowego Pythona 2.7 od kilku miesięcy (pięć lat po tym poście) i chociaż powiedziałbym, że zdecydowanie warto - posiadanie dostępu do całej tej pamięci RAM jest całkiem fajne, jeśli nie chcesz tracić tyle czasu zarządzanie danymi - wciąż istnieje kilka bibliotek, które są albo nieco denerwujące, jeśli chodzi o uzyskanie 64-bitowych wersji, albo w wielu przypadkach prawie niemożliwe do użycia (32-bitowe biblioteki DLL są jednym z przykładów zasobu, bez którego nie udało mi się jeszcze wykorzystać ładowanie 32-bitowej wersji Pythona)
Darren Ringer
12
Jest też odwrotnie: tensorflow jest dostępny tylko dla 64-bitowego Pythona w systemie Windows, chyba że chcesz go zbudować.
TrakJohnson
28

Z mojego doświadczenia wynika, że ​​korzystanie z wersji 32-bitowej jest bardziej bezproblemowe. O ile nie pracujesz nad aplikacjami, które intensywnie wykorzystują pamięć (głównie obliczenia naukowe, które używają więcej niż 2 GB pamięci), lepiej jest z wersjami 32-bitowymi, ponieważ:

  1. Zwykle używasz mniej pamięci.
  2. Masz mniej problemów z korzystaniem z COM (ponieważ korzystasz z systemu Windows).
  3. Jeśli musisz załadować biblioteki DLL, najprawdopodobniej są one również 32-bitowe. Python 64-bitowy nie może załadować 32-bitowych bibliotek bez kilku ciężkich hacków, uruchamiających inny Python, tym razem w wersji 32-bitowej i używając IPC.
  4. Jeśli musisz załadować biblioteki DLL, które sam skompilujesz, będziesz musiał skompilować je do wersji 64-bitowej, co jest zwykle trudniejsze (szczególnie jeśli używasz MinGW w systemie Windows).
  5. Jeśli kiedykolwiek użyjesz PyInstaller lub py2exe, narzędzia te będą generować pliki wykonywalne z taką samą bitowością jak Twój interpreter Pythona.
Ronan Paixão
źródło
6

Nie musisz używać wersji 64-bitowej, ponieważ system Windows będzie emulował programy 32-bitowe przy użyciu wow64. Jednak użycie wersji natywnej (64-bitowej) zapewni większą wydajność.

codymanix
źródło
4

Używaj wersji 64-bitowej tylko wtedy, gdy musisz pracować z dużymi ilościami danych, w tym scenariuszu 64 bity działają lepiej z niewygodą, o której powiedział John La Rooy; jeśli nie, trzymaj się 32 bitów.

Ariel Jiménez
źródło
2

Miałem problem z uruchomieniem aplikacji Python (uruchamiającej duże ramki danych) w 32 - otrzymałem komunikat MemoryError, podczas gdy na 64 działało dobrze.

AlKo
źródło
0

Pakiety uczenia maszynowego, takie jak tensorflow 2.x, są zaprojektowane do działania tylko w 64-bitowym języku Python, ponieważ wymagają dużej ilości pamięci.

H_J
źródło