Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Général Python
Général Python Forum d'entraide sur les fondamentaux du langage Python, syntaxe, POO, bibliothèque standard, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 22/02/2013, 16h17   #1
kiby56
Invité régulier
 
Inscription : août 2008
Messages : 36
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 36
Points : 5
Points : 5
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
kiby56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 16h37   #2
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 615
Détails du profil
Informations personnelles :
Nom : Homme Patrice BLANGARIN
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 615
Points : 3 727
Points : 3 727
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h11.


 
 
 
 
Partenaires

Hébergement Web