193 votos

¿Cómo puedo determinar si mi concha python está ejecutando en modo de 32 bits o 64 bits en OS X?

Necesito una manera de decirle de qué modo la concha es de dentro de la shell.

He intentado buscar en la plataforma de módulo, pero parece que sólo para informarle acerca de "acerca de los bits de la arquitectura y de la conexión que utiliza el formato para el archivo ejecutable": el binario compilado como el de 64 bits, aunque (me estoy corriendo en OS X 10.6), por lo que parece siempre el informe de 64 bits, aunque yo estoy usando los métodos descritos aquí para forzar el modo de 32 bits).

220voto

Ned Deily Puntos 40248

ACTUALIZADO: Una forma es buscar en sys.maxsize como se documenta aquí:

$ python-32 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffff', False)
$ python-64 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffffffffffff', True)

sys.maxsize fue introducido en Python 2.6. Si usted necesita una prueba para los sistemas más antiguos, este un poco más complicado de la prueba debería funcionar en todos los Python 2 y 3 versiones:

$ python-32 -c 'import struct;print( 8 * struct.calcsize("P"))'
32
$ python-64 -c 'import struct;print( 8 * struct.calcsize("P"))'
64

Por CIERTO, usted puede ser tentado a utilizar platform.architecture() de este. Por desgracia, sus resultados no son siempre fiables, especialmente en el caso de OS X universal binarios.

$ arch -x86_64 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32'
64bit True
$ arch -i386 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32'
64bit False

116voto

Dustin Puntos 501

Cuando se inicia el intérprete de Python en la línea de comandos/terminal también puede ver una línea como:

Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32

Donde [MSC v.1500 64 bits (AMD64)] significa Python de 64 bits. Trabaja para mi configuración particular, de todos modos.

97voto

ChristopheD Puntos 38217

Básicamente una variante de respuesta de Matthew Marshall (con la estructura de la std.library):

import struct
print struct.calcsize("P") * 8

36voto

Matthew Marshall Puntos 2521

Trate de usar ctypes para obtener el tamaño de un puntero void:

import ctypes
print ctypes.sizeof(ctypes.c_voidp)

Va a ser 4 o 8 para 32 o 64 bits respectivamente.

11voto

Peter Hosey Puntos 66275

Para una solución no programática, mira en el Monitor de actividad. Muestra la arquitectura de 64 bits procesos como "Intel (64-bit)".

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: