Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1063 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Lire le taux des cores du CPU (windows et linux) sous python

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lire le taux des cores du CPU (windows et linux) sous python

n°1677450
amaury10
Posté le 27-01-2008 à 16:06:39  profilanswer
 

Bonjours à tous,
Dans le cadre d'un projet de monitoring, je me retrouve à devoir écrire un programme sous python qui serait capable de lire les taux d'utilisation des 2 cores CPU, de la RAM, ainsi que la température du CPU.
Le but final est d'envoyer ces infos à une interface via le port LPT1.
 
Ma question est la suivante:
Comment puis-je acquérir les taux d'utilisations dont j'ai besoin (il sont disponiples puisque win et linux peuvent les afficher en temps réel),
et quelles commandes dois-je utiliser pour écrire sur LPT1???
 
PS: j'aimerai que mon projet soit multi-plateforme: Win et Linux.


---------------
LAURENT Amaury, Etudiant Ingénieur - Instrumentation Automatique Informatique
mood
Publicité
Posté le 27-01-2008 à 16:06:39  profilanswer
 

n°1677651
_mumu_
Posté le 28-01-2008 à 08:22:57  profilanswer
 

Pour win, je sais pas. Mais pour linux tu peux utiliser top ou regarder dans les fichiers de /proc.
Avec top et sensors (pour la température, il faut que lm-sensors soit installé) tu peux faire comme ça :  

Code :
  1. #!/usr/bin/env python
  2. # -*- coding:Utf-8 -*-
  3. import os
  4. import re
  5. buff = os.popen('top -b -d0.5 -n 2')
  6. infos = buff.read()
  7. buff.close()
  8. cpu = re.findall('([0-9]*.[0-9])%us', infos)[1]
  9. mem = re.findall('([0-9]*)k used', infos)[2]
  10. print 'Cpu : '+ cpu +'%'
  11. print 'Mem : '+ str(int(mem)/1024) + 'M used'
  12. buff=os.popen('sensors')
  13. infos=buff.read().replace('+', '').replace(' ', '')
  14. buff.close()
  15. cpu_temp = re.findall('CPUTemp:([0-9]*)', infos)[0]
  16. print 'Cpu Temp : '+ cpu_temp + 'C'


Message édité par _mumu_ le 28-01-2008 à 08:52:59

---------------
"Software is like sex. It's better when it's free..."   Linus Torvalds
n°1679841
amaury10
Posté le 31-01-2008 à 15:49:18  profilanswer
 

Ok. Merci pour le script; je l'essaye dès que possible.
En revanche, pour écrire sur LPT1, c'est quelle commande?
Et y a t-il moyen de détailler les taux d'util pour les 2 cores du proc?


Message édité par amaury10 le 31-01-2008 à 18:08:44
n°1680946
amaury10
Posté le 02-02-2008 à 19:45:40  profilanswer
 

Le script fonctionne, j'ai les taux qui s'affichent mais après j'ai une liste d'erreurs...

n°1681179
_mumu_
Posté le 03-02-2008 à 22:30:27  profilanswer
 

As tu lm-sensors d'installé ? Car une fois que les taux cpu et mem sont affichés, le script lance la commande sensors pour récupérer la température du cpu. Or pour que cette commande fonctionne, il faut que lm-sensors soit installé et correctement configuré.


---------------
"Software is like sex. It's better when it's free..."   Linus Torvalds
n°1682191
amaury10
Posté le 05-02-2008 à 18:24:25  profilanswer
 

Ah. Je crois pas qu'il soit installé.

n°1682201
amaury10
Posté le 05-02-2008 à 18:40:44  profilanswer
 

La console m'affiche ceci:
[amaury@localhost Bureau]$ python Affiche\ CPU.py
Cpu : 0.0%
Mem : 656M used
Traceback (most recent call last):
  File "Affiche CPU.py", line 15, in <module>
    cpu_temp = re.findall('CPUTemp: ([0-9]*)', infos)[0]
IndexError: list index out of range
C'est grave?

 

PS: sensor est installé


Message édité par amaury10 le 05-02-2008 à 18:41:15
n°1683627
_mumu_
Posté le 07-02-2008 à 20:44:20  profilanswer
 

C'est que re.findall ne trouve pas la température. Si tu tapes sensors dans un terminal ça t'affiche quoi ?
Normalement tu dois avoir un truc dans ce style :
:~$ sensors
k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:
             +34°C

 

w83627thf-isa-0290
Adapter: ISA adapter
VCore:     +1.47 V  (min =  +0.00 V, max =  +3.84 V)              
+12V:     +11.55 V  (min =  +4.92 V, max =  +0.97 V)       ALARM  
+3.3V:     +3.28 V  (min =  +1.14 V, max =  +1.95 V)       ALARM  
+5V:       +5.01 V  (min =  +5.65 V, max =  +1.71 V)       ALARM  
-12V:      +6.06 V  (min = -14.25 V, max = -14.91 V)       ALARM  
V5SB:      +5.03 V  (min =  +1.10 V, max =  +1.99 V)       ALARM  
VBat:      +0.03 V  (min =  +2.32 V, max =  +0.51 V)       ALARM  
fan1:     1896 RPM  (min = 12053 RPM, div = 4)              ALARM  
CPU Fan:  3308 RPM  (min =   -1 RPM, div = 2)              ALARM  
fan3:     2428 RPM  (min = 42187 RPM, div = 4)              ALARM  
M/B Temp:    +23°C  (high =   +19°C, hyst =    +0°C)   sensor = thermistor   ALARM  
CPU Temp:  +38.0°C  (high =   +80°C, hyst =   +75°C)   sensor = thermistor

 

Et le script me retourne ça :
~$ ./prog/python/infos_core.py
Cpu : 18.0%
Mem : 693M used
Cpu Temp : 38C


Message édité par _mumu_ le 07-02-2008 à 20:55:45

---------------
"Software is like sex. It's better when it's free..."   Linus Torvalds
n°1687091
amaury10
Posté le 15-02-2008 à 19:03:31  profilanswer
 

Le script fonctionne enfin.
Il n'y a toujours pas d'idées pour windows et pour LPT1?
 
Au final, mon prog devrait ressembler à cela:
http://nsm01.casimages.com/img/2008/05/23//0805230628102105093.jpg


Message édité par amaury10 le 23-05-2008 à 18:28:28
n°1687092
amaury10
Posté le 15-02-2008 à 19:05:38  profilanswer
 

Il ne reste que la partie acquisition, calculs et écriture à écrire :)

mood
Publicité
Posté le 15-02-2008 à 19:05:38  profilanswer
 

n°1736418
amaury10
Posté le 23-05-2008 à 18:24:56  profilanswer
 

J'ai un nouveau problème,
Ma question peu paraitre bête mais je n'ai pas trouvé de réponse claire.
Voila: j'ai programmé une interface graphique avec wx.Python. Elle comporte plusieurs listes déroulantes (widget wx.Choice).
J'aimerai simplement récupérer la valeur que va choisir l'utilisateur dans la liste.
 
Voici un morceau de mon code:
 

Code :
  1. choix = [ '% CPU1' , '% CPU2', '% RAM' , "% GPU" , '%HDD' , "T cpu (°C)" , "T gpu (°C)" , "V ventilateur CPU (%)" , "V ventilateur GPU (%)" ]
  2.         port = [ 'LPT 1' , 'USB', 'RS232' ]
  3.         power = [ 'ON' , 'OFF' ]
  4.      
  5.         self.choix1 = wx.Choice(self,-1,choices=choix)
  6.         sizer.Add (self.choix1, (2,2), (1,1))
  7.                            
  8.         self.choix2 = wx.Choice(self,-1,choices=choix)
  9.         sizer.Add (self.choix2, (8,2), (1,1))
  10.              
  11.         self.choix3 = wx.Choice(self,-1,choices=choix)
  12.         sizer.Add (self.choix3, (2,6), (1,1))
  13.              
  14.         self.choix4 = wx.Choice(self,-1,choices=choix)
  15.         sizer.Add (self.choix4, (8,6), (1,1))
  16.         self.choix5 = wx.Choice(self,-1,choices=port)
  17.         sizer.Add (self.choix5, (13,2), (1,1))
  18.         self.choix6 = wx.Choice(self,-1,choices=power)
  19.         sizer.Add (self.choix6, (13,6), (1,1))


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Lire le taux des cores du CPU (windows et linux) sous python

 

Sujets relatifs
Lancer un script php depuis un cgi python[python] valeur de retour d'un programme
Générer des crashs dans Windows.Lire et écrire dans une base de données SQL via Excel
personnaliser l'explorateur windows ???Petites questions générales sur le Python
gros bug PHP linux avec includeProblème IIS 5 et ASP sur Windows 2000 pro
Ouvrir une page internet à une heure précise via Windows (CRON)lire des commentaires HTML en javascript
Plus de sujets relatifs à : Lire le taux des cores du CPU (windows et linux) sous python


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR