Python で 32bit/64bit アーキテクチャを調べる方法 ― 2022年01月19日 22時12分00秒
MacOS だと、異なったアーキテクチャで共有ライブラリだかで、変更される様で sys.maxsize を用いた方が確実に調べられるらしい。 他にも、amd64 で i386 のバイナリを走らせたりする場合などだと、調べ方は変わるだろう。 個人的には上の二つ環境で Python は使っていないので、実際の動作は知らない。
以下の出力例は FreeBSD 13.0-RELEASE i386 の Python 3.7 でのもの。
まずは platform ライブラリを使う方法。この方法は可読性も良く、個人的には一番好き。
他に、sys ライブラリを使って最大値を調べる事により分岐することも出来る。MacOS では確実な方法らしい。
>>> import platform
>>> platform.architecture()[0]
'32bit'
>>> import platform
>>> platform.architecture()
('32bit', 'ELF')
>>>
struct ライブラリは C 言語とのデータ互換の為のライブラリ。
これを使って、void* 型の大きさを調べる。
>>> import sys
>>> sys.maxsize > 2**32
False
ctypes も C 言語の対応型を保持するライブラリなので、
こちらでも void* 型を使って計算可能。
>>> import struct
>>> struct.calcsize("P")
4
>>> import ctypes
>>> ctypes.sizeof(ctypes.c_voidp)
4
最近のコメント