Connaître l'architecture de l'ordinateur avec platform.machine() en Python

1. À propos de platform.machine() en Python

Le module platform de Python fournit plusieurs fonctions permettant d'obtenir des informations sur le système et la machine sur lesquels un programme est exécuté. La fonction platform.machine() retourne une chaîne indiquant le type de machine ou l'architecture matérielle rapportée par le système.

Selon l'ordinateur et le système d'exploitation utilisés, cette fonction peut retourner des valeurs telles que AMD64, x86_64, i386, i686, arm64 ou aarch64. Le résultat dépend de la plateforme sur laquelle Python est exécuté.

Le programme suivant constitue l'utilisation la plus simple de platform.machine().

Sortie possible :

Sur de nombreux ordinateurs Windows 64 bits équipés d'un processeur compatible x86-64, la valeur retournée peut être AMD64. Cette appellation désigne l'architecture et ne signifie pas nécessairement que le processeur physique est fabriqué par AMD.

2. Obtenir l'architecture de la machine

La fonction platform.machine() ne nécessite aucun argument. Après l'importation du module platform, nous pouvons appeler directement cette fonction et stocker son résultat dans une variable.

Le programme suivant enregistre l'information dans la variable architecture puis l'affiche avec un message explicatif.

Sortie possible :

Il est également possible d'importer directement la fonction machine() depuis le module platform.

Sortie possible :

Les deux méthodes permettent d'obtenir le même type d'information. L'écriture platform.machine() présente toutefois l'avantage d'indiquer clairement que la fonction appartient au module platform.

3. Comprendre les valeurs retournées par platform.machine()

Le résultat de platform.machine() est une chaîne de caractères. Son contenu dépend du système d'exploitation, de la plateforme et des informations fournies à Python par l'environnement d'exécution.

Le programme suivant affiche la valeur retournée ainsi que son type Python.

Sortie possible :

Comme le résultat est de type str, nous pouvons utiliser les méthodes classiques des chaînes de caractères. Il est par exemple possible de convertir la valeur en minuscules pour faciliter certaines comparaisons.

Sortie possible :

Cette normalisation est utile lorsque nous voulons comparer plusieurs appellations possibles d'une architecture sans dépendre des majuscules et des minuscules.

4. Distinguer les architectures x86, AMD64 et ARM

Les valeurs retournées par platform.machine() peuvent varier selon les plateformes. Les architectures de la famille x86-64 peuvent notamment apparaître sous des appellations telles que AMD64 ou x86_64, tandis que les plateformes ARM 64 bits peuvent utiliser des valeurs telles que ARM64 ou aarch64.

Le programme suivant affiche simplement l'architecture détectée afin que nous puissions examiner la valeur réellement retournée par notre machine.

Sortie possible sur Windows :

Sur une machine Linux x86-64, une autre appellation peut être retournée.

Sortie possible sous Linux :

Sur une plateforme ARM 64 bits, le résultat peut encore être différent.

Sortie possible sur une plateforme ARM :

Il est donc préférable de prévoir plusieurs appellations lorsque le programme doit reconnaître une famille d'architectures sur différents systèmes.

5. Associer l'architecture au système d'exploitation

La valeur retournée par platform.machine() devient plus informative lorsqu'elle est associée au système d'exploitation. Pour cela, nous pouvons utiliser simultanément platform.system() et platform.machine().

Le programme suivant affiche le système et l'architecture de la machine.

Sortie possible :

Nous pouvons compléter ces informations avec platform.release() afin d'obtenir également la release du système.

Sortie possible :

Cette combinaison est particulièrement utile pour construire une petite fiche de diagnostic système ou identifier l'environnement dans lequel une application Python est exécutée.

6. Tester l'architecture dans un programme Python

Comme platform.machine() retourne une chaîne, nous pouvons utiliser son résultat dans une structure conditionnelle. Il est cependant préférable de prévoir plusieurs appellations pour une même famille d'architectures.

Le programme suivant distingue simplement une architecture x86-64 d'une architecture ARM 64 bits.

Sortie possible :

Nous pouvons également prévoir quelques appellations correspondant aux architectures x86 32 bits.

Sortie possible :

Cette classification reste volontairement simple : de nombreuses architectures et variantes peuvent exister. Il convient donc d'adapter les tests aux plateformes réellement prises en charge par l'application.

7. Comparer platform.machine() et platform.architecture()

Le module platform fournit également la fonction platform.architecture(). Malgré son nom, elle ne fournit pas exactement la même information que platform.machine(). La première renvoie généralement un tuple contenant notamment une indication telle que 64bit ou 32bit, tandis que la seconde fournit le type de machine rapporté par le système.

Le programme suivant compare les résultats des deux fonctions.

Sortie possible :

Nous pouvons récupérer séparément les deux éléments retournés par platform.architecture().

Sortie possible sous Windows :

platform.machine() et platform.architecture() sont donc complémentaires, mais leurs résultats ne doivent pas être confondus. La première décrit le type de machine rapporté par la plateforme, tandis que la seconde fournit des informations relatives à l'architecture de l'exécutable Python utilisé.

8. Créer une fonction pour obtenir les informations matérielles

Lorsque plusieurs informations doivent être utilisées dans une application, nous pouvons créer une fonction Python qui regroupe les différents appels au module platform.

La fonction suivante retourne simplement la valeur obtenue avec platform.machine().

Sortie possible :

Nous pouvons ensuite créer une fonction plus complète qui retourne plusieurs informations sous forme de dictionnaire.

Sortie possible :

Le dictionnaire facilite ensuite l'utilisation séparée des différentes informations. Par exemple, la valeur associée à la clé "machine" correspond au résultat de platform.machine().

9. Utiliser platform.machine() dans un programme multiplateforme

La fonction platform.machine() peut être utile lorsqu'un programme doit sélectionner une ressource ou un traitement selon l'architecture. C'est notamment le cas lorsqu'une application utilise des fichiers binaires différents pour les plateformes x86-64 et ARM64.

Le programme suivant choisit une configuration selon la famille d'architecture détectée.

Sortie possible :

Il faut cependant garder à l'esprit que platform.machine() décrit l'information rapportée par l'environnement d'exécution. Dans des contextes particuliers tels que la virtualisation, l'émulation ou certaines couches de compatibilité, cette valeur doit être interprétée avec prudence.

Le programme suivant affiche plusieurs informations simultanément afin de mieux replacer l'architecture dans son contexte.

Sortie possible :

Cette approche est préférable lorsqu'un programme a besoin d'établir un diagnostic plus précis de son environnement d'exécution.

10. À retenir !

La fonction platform.machine() permet d'obtenir le type de machine ou l'architecture matérielle rapportée par le système. Elle appartient au module platform de la bibliothèque standard de Python et peut donc être utilisée sans installer de package supplémentaire.

  • platform.machine() ne nécessite aucun argument.
  • La fonction retourne une chaîne de caractères str.
  • Des valeurs telles que AMD64, x86_64, arm64 ou aarch64 peuvent être retournées selon la plateforme.
  • AMD64 désigne une architecture x86-64 et n'implique pas que le processeur soit obligatoirement fabriqué par AMD.
  • Les appellations peuvent varier selon le système d'exploitation.
  • platform.system() permet d'associer l'architecture au système d'exploitation.
  • platform.node() permet d'ajouter le nom de la machine aux informations recueillies.
  • platform.architecture() fournit des informations différentes et complémentaires concernant notamment l'exécutable Python.
  • Il est conseillé de prévoir plusieurs appellations lorsqu'un programme doit reconnaître une famille d'architectures.
  • Dans certains environnements virtualisés ou émulés, le résultat doit être interprété en tenant compte de l'environnement d'exécution.

Le programme suivant rassemble les principales informations étudiées et permet d'obtenir rapidement une fiche concernant le système et l'architecture de l'ordinateur.

Sortie possible :

 




Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


Leave a Reply

Your email address will not be published. Required fields are marked *