Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

NodeboxGL, threading et partage de données

1 réponse
Avatar
Julien
Bonjour,

Soit le code basique suivant :

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

import psutil
from nodebox.graphics import *
import threading

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


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

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 =3D str(VAL)

if __name__ =3D=3D "__main__":
canvas =3D Canvas(width=3D800, height=3D600, name=3D"App GL",
resizable=3DFalse)
CpuThread().start()
canvas.run(draw)

Mes questions concernent le multithreading.

Ici je lance un thread charg=E9 de r=E9cup=E9rer l'occupation processeur en
parall=E8le du programme principal (une fen=EAtre graphique opengl). Je
souhaite donc r=E9cup=E9rer dans ma fen=EAtre principale la valeur renvoy=
=E9e
par le thread secondaire.

1 - Ici j'ai fait cela avec une variable globale, =E7a ne me para=EEt pas
tr=E8s propre ? Me trompe-je ?

2 - J'ai lu bri=E8vement que l'on pouvait utiliser un m=E9canisme de pile
(queue) dans le contexte multithread ? Est-ce la m=E9thode recommand=E9e
pour traiter ce type de cas ? Ou est-ce sortir un bazooka pour pas
grand chose ?

3 - Le thread est lanc=E9 en parall=E8le du programme principal, comment
contr=F4ler ce thread autonome et pouvoir le tuer quand on quitte la
fen=EAtre graphique principale du programme. J'ai lu des choses =E0 propos
d'un mode d=E9mon =E0 utiliser avant le lancement du thread, est-ce la
m=E9thode appropri=E9e ?

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

J.H

1 réponse

Avatar
Julien
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