1import platform 2import sys 3 4 5def get_cpu(): 6 result = {} 7 8 # Operating system 9 result['platform'] = sys.platform 10 result['windows'] = result['platform'] == 'win32' 11 result['linux'] = result['platform'].startswith('linux') 12 result['mac'] = result['platform'] == 'darwin' 13 result['release'] = platform.release().lower() 14 result['binext'] = '.exe' if result['windows'] else '' 15 16 # Number of bits 17 result['bitness'] = '64' if platform.machine().endswith('64') or sys.maxsize > 2**32 else '32' 18 19 # Instruction sets 20 try: 21 info = '' 22 with open('/proc/cpuinfo') as f: 23 info = f.read() 24 result['popcnt'] = 'popcnt' in info 25 result['bmi2'] = 'bmi2' in info 26 except OSError: 27 # Logic not fully true 28 guess = (result['bitness'] == '64') 29 result['popcnt'] = guess 30 result['bmi2'] = guess 31 return result 32