+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité régulier
    Inscrit en
    août 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : août 2008
    Messages : 39
    Points : 7
    Points
    7

    Par défaut priorité sur des threads

    Bonjour,

    J'ai actuellement un process exe (py2exe) que je place en priorité haute comme çà :
    Code :
    1
    2
    3
    4
     
    p = psutil.Process(os.getpid())
    p.set_nice(psutil.HIGH_PRIORITY_CLASS)
    p.set_cpu_affinity([0])
    Ensuite, je lance 2 threads (modules threading):
    Code :
    1
    2
    3
    4
    5
    th_Listen = threading.Thread(target = checkMsgThread)
        th_Listen.start()
     
        th_Report = threading.Thread(target = reportThread)
        th_Report.start()
    Le th_Report fonctionne bien tout le temps même quand la bécane est à 100% d'utilisation processeur à cause d'autres programmes, par contre le th_Listen ne fonctionne plus (check de message tcp avec zmq, il ne reçoit plus rien quand le cpu est à 100%)

    Je ne maitrise pas bien tout çà, mais comment faire pour que les deux threads continuent de tourner normalement même quand une autre appli prend tout le temps cpu restant ? (mes threads sont minime en cpu, avec que çà le cpu reste à 0% alors que tout fonctionne bien).

    Merci,
    Kib

  2. #2
    Expert Confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2006
    Messages : 2 720
    Points : 3 953
    Points
    3 953

    Par défaut

    Bonjour,

    th_Report et th_Listen sembles s'occuper de la partie communication :
    th_Report aussi utilise zmq ? Quelle est sa fonction ? send ?
    Je ne connais pas zmq mais il me semble qu'il utilise pour le send des buffers pour les messages gérés par des threads de communication internes au Context, ceci afin de ne pas être 'bloquant'. Je ne sais pas s'il en est de même pour recv (A vérifier dans la doc.) : Si ce n'est pas le cas cela pourrais, peut-être, expliquer la chose.
    A prendre avec de pincettes car pures élucubrations dominicales.

    Je sais que c'est moins 'efficace' mais avez vous tester juste avec socket ?

    Un petit test de multiprocessing avec élévation de la priorité du process ?
    L'exemple de la doc multiprocessing pour l' id du process :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    from multiprocessing import Process
    import os
     
    def info(title):
        print title
        print 'module name:', __name__
        if hasattr(os, 'getppid'):  # only available on Unix
            print 'parent process:', os.getppid()
        print 'process id:', os.getpid()
     
    def f(name):
        info('function f')
        print 'hello', name
     
    if __name__ == '__main__':
        info('main line')
        p = Process(target=f, args=('bob',))
        p.start()
        p.join()
    Après vous connaissez les win32process.HIGH_PRIORITY_CLASS et autres.

    @+
    Merci d'utiliser le forum pour les questions techniques.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •