NodeboxGL, threading et partage de données

Le
Julien
Bonjour,

Soit le code basique suivant :

# -*- coding: UTF-8 -*-

import psutil
from nodebox.graphics import *
import threading

VAL = 10.0
txt = Text(str(VAL), fontname="Droid Sans", fill = color(0.25))


class CpuThread(threading.Thread):
def run (self):
global VAL
while 1:
print 'processor thread ' + str(VAL) + ' in percent'
VAL = psutil.cpu_percent(interval=1)

def draw(canvas):

canvas.clear()
background(0)

rect(50, 50, 40, ((VAL*500)/100))
stroke(1)
strokewidth(0)
fill(1)

text(txt, 55, ((VAL*500)/100) + 80)
txt.text = str(VAL)

if __name__ == "__main__":
canvas = Canvas(width=800, height=600, name="App GL",
resizable=False)
CpuThread().start()
canvas.run(draw)

Mes questions concernent le multithreading.

Ici je lance un thread chargé de récupérer l'occupation processeur en
parallèle du programme principal (une fenêtre graphique opengl). Je
souhaite donc récupérer dans ma fenêtre principale la valeur renvoy=
ée
par le thread secondaire.

1 - Ici j'ai fait cela avec une variable globale, ça ne me paraît pas
très propre ? Me trompe-je ?

2 - J'ai lu brièvement que l'on pouvait utiliser un mécanisme de pile
(queue) dans le contexte multithread ? Est-ce la méthode recommandée
pour traiter ce type de cas ? Ou est-ce sortir un bazooka pour pas
grand chose ?

3 - Le thread est lancé en parallèle du programme principal, comment
contrôler ce thread autonome et pouvoir le tuer quand on quitte la
fenêtre graphique principale du programme. J'ai lu des choses à propos
d'un mode démon à utiliser avant le lancement du thread, est-ce la
méthode appropriée ?

Je vous remercie pour les réponses, suggestions ou conseils que vous
pourrez m'apporter.

J.H
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Julien
Le #24000541
J'ai trouvé les réponses à mes questions en parcourant l'excellent
site : http://python.jpvweb.com/mesrecettespython/doku.php?id=thread_tabl eaublanc

La queue ne correpondait pas à ce que je souhaitais faire. Le tableau
blanc est adapté. Les réponses à mes autres questions découlent des
informations que j'ai pu lire.

J.H
Publicité
Poster une réponse
Anonyme