Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何知道OS/CPU是否为64位_Python - Fatal编程技术网

Python:如何知道OS/CPU是否为64位

Python:如何知道OS/CPU是否为64位,python,Python,在Windows下,我正在运行一个32位的python.exe。我需要知道OS/CPU是64位还是32位 我的机器运行的是Windows7 64位 选中,并尝试运行此Python脚本: import ctypes; print(32 if ctypes.sizeof(ctypes.c_voidp)==4 else 64, 'bit CPU') import sys; print("%x" % sys.maxsize, sys.maxsize > 2**32) import struct;

在Windows下,我正在运行一个32位的python.exe。我需要知道OS/CPU是64位还是32位

我的机器运行的是Windows7 64位

选中,并尝试运行此Python脚本:

import ctypes; print(32 if ctypes.sizeof(ctypes.c_voidp)==4 else 64, 'bit CPU')
import sys; print("%x" % sys.maxsize, sys.maxsize > 2**32)
import struct; print( 8 * struct.calcsize("P"))
import platform; print( platform.architecture()[0] )
print( platform.machine() )
它输出:

32 bit CPU
7fffffff False
32
32bit
AMD64
参考文章中的任何建议都没有真正向您提供CPU/OS体系结构信息。它们都报告32位,因为我运行的是Python 32位二进制文件


如何以可移植的方式确定CPU/OS是32位还是64位(可以在platform.machine()中循环64个字符串,但我怀疑这是个好方法)?

您查询的大多数信息是由解释器的字号决定的,而不是CPU

只有
platform.machine()
忽略此信息;它取而代之的是system
uname-m
数据,建议使用该命令来确定您的系统对于和是否为64位,Windows提供完全相同的信息(Python在所有情况下都使用C
uname()
函数)

测试该字符串中的
64
,或构建一组可接受的值:

'64' in platform.machine()

您可能希望将此解决方案用于python2.7及更新版本:

def is_os_64bit():
    return platform.machine().endswith('64')

那么为什么
AMD64
不告诉您这些呢?在32位二进制文件中,其他值肯定都应该是32位,这是完全正常的。无论是
AMD64
还是
x86\u 64
都应该告诉您CPU是64位的。@MartijnPieters:是的,它告诉我这一点,但正在做的
是\u 64=(platform.machine().find(“64”)!=-1)
一种便携式检查方法吗?这能在所有64位的CPU/O上工作吗?它能在我尝试过的3种不同的体系结构上工作(其中一种是VM)。@MartijnPieters:好的,这可能是一个可以接受的答案。
def is_os_64bit():
    return platform.machine().endswith('64')