IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Discussion : Psutil surcoté ?


Sujet :

Python

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Discussion : Psutil surcoté ?
    Bonjour,

    Cela fait quelque temps que je n'étais pas venu poser une question à la con !!!

    J'utilisais autrefois psutil pour parcourir la liste des processus en cours sur mon PC, mais j'ai remarqué que le module psutil est plus lent que la plupart des autres méthodes que l'on peut retrouver dans les archives de l'internet !

    Alors pourquoi on ne retrouve sur les forums presque uniquement la solution psutil ?
    Certes le code est souvent moins "beau" mais il ne tient pas à grand chose d'en faire un nouveau module ou une fonction pour cacher le code.

    Voilà un script relativement simple pour comparer 2 méthodes pour le calcul de "l'âge" d'un processus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    import os, time, datetime, threading
    import subprocess, psutil, statistics
     
    def perf_psutil(n=100):
        liste = []    
        count = 0
        ct = time.time()
        while count < n:
            count+=1
            t0 = time.perf_counter_ns()
            p = [proc.create_time() for proc in psutil.process_iter() if proc.name() == "explorer.exe"][0]
            d = ct - p
            t1 = time.perf_counter_ns()
            liste.append(t1-t0)
     
        print("Date in sec:",p)
        print("Duration:",d)
        print("Performance psutil :", statistics.mean(liste)/10**9)
     
    def perf_wmic(n=100):
        liste = []    
        count = 0
        ct = datetime.datetime.now()
        while count < n:
            count+=1
            t0 = time.perf_counter_ns()
            p = [x.split(b'CreationDate=')[1] for x in subprocess.Popen('wmic PROCESS WHERE NAME="Explorer.exe" GET * /format:list <nul', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0].replace(b'\r\r\n',b',').split(b',') if x.startswith(b'CreationDate=')][0]
            d = datetime.datetime.now()-datetime.datetime(int(p[:4]),int(p[4:6]),int(p[6:8]),int(p[8:10]),int(p[10:12]),int(p[12:14]),int(p[15:-4]))
            t1 = time.perf_counter_ns()
            liste.append(t1-t0)
     
        print("Date :",p)
        print("Duration:",d.total_seconds())
        print("Performance wmic :", statistics.mean(liste)/10**9)
     
    print('########## PSUTIL ##########')
    perf_psutil(10)
    print('############################')
    print('########### WMIC ###########')
    perf_wmic(10)
    print('############################')
    Le résultat est sans appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ########## PSUTIL ##########
    Date in sec: 1624790271.081833
    Duration: 18625.84829068184
    Performance psutil : 0.17050247
    ############################
     
    ########### WMIC ###########
    Date : b'20210627123751.081832+120'
    Duration: 18628.22999
    Performance wmic : 0.06602881
    ############################
    Dernière modification par Invité ; 27/06/2021 à 20h36.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 30/01/2005, 23h48
  2. Discussions sur la (les) syntaxe(s)
    Par Laurent Dardenne dans le forum Sepi
    Réponses: 11
    Dernier message: 02/01/2005, 20h25
  3. Réponses: 2
    Dernier message: 07/10/2004, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo