[英]Windows x64 vs x86: Hardware vs. OS vs. process
我在 Windows 上的 Python 3 中遇到基于 x86 与 x64 的问题。
我需要知道我的 Python 程序是否正在运行:
它们不是一回事(完全不同!)。
AMD64 架构处理器可以运行 64 位或 32 位操作系统。
64 位操作系统可以运行 64 位或 32 位进程。
我知道:
platform.architecture()
返回一个字符串 - 但它代表了这三个中的哪一个? (文档似乎没有说。)(sys.maxsize > 2**32)
那么我在 64 位进程中。 美好的; 但是如果我在 32 位进程中,我怎么知道我是在 64 位还是 32 位操作系统上?为了防止不可避免的“你为什么在乎?” 问题,这是因为我的 Python 程序正在自动配置 Windows - x86 和 x64 Windows 上的情况不同,但我事先不知道我的程序是在 32 位还是 64 位 Python 上运行。
所以我需要弄清楚这一点。
我相信这会起作用,但我还没有在 32 位版本的 Windows 上测试过它:
import sys, os
x64_process = (sys.maxsize > 2**32)
x64_os = os.environ.get('ProgramW6432') is not None
可能是我最重要的用例 - 在注册表更改后重新启动 explorer.exe:
def restartExplorer():
'''Restart explorer'''
do(r'taskkill /f /im explorer.exe')
if x64_os and not x64_process:
do(os.environ['systemroot']+ r'\sysnative\cmd.exe /c start /B explorer.exe') # because this Python is in a 32 bit process
else:
do("start explorer.exe")
我不会给你do()
的实现,因为它很明显。 (但如果有人问的话。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.