OVH Cloud OVH Cloud

Timer avec Python

7 réponses
Avatar
Alain
Bonjour,

Je programme habituellement sous DELPHI/WINDOWS
J'y utilise des timers dont j'exploite l'évènement 'ontimer'
Est-ce possible de réaliser la même chose sous PYTHON
Si oui, comment?
So non quelle solution pouvez-vous me conseiller?

Merci de vos réponses

Alain

7 réponses

Avatar
Jean-Baptiste renard
Alain wrote:

Je programme habituellement sous DELPHI/WINDOWS
J'y utilise des timers dont j'exploite l'évènement 'ontimer'
Est-ce possible de réaliser la même chose sous PYTHON
Si oui, comment?
So non quelle solution pouvez-vous me conseiller?


le module threading contient ce qu'il te faut.

exemple :

import threading
def hello():
print "hello, world"
nb
for i in range(nb):
t = threading.Timer(5.0, hello)
t.start()
while t.isAlive(): pass
del t

Cordialement,

Avatar
Alain
Merci, c'est exactement cela
J'ai cependant une sous question
Peux-t-on lancer plusieurs timers en même temps avec un argument pouvant les
identifier ?



Alain

"Jean-Baptiste renard" a écrit dans le message de
news:45575aff$0$7739$
Alain wrote:

Je programme habituellement sous DELPHI/WINDOWS
J'y utilise des timers dont j'exploite l'évènement 'ontimer'
Est-ce possible de réaliser la même chose sous PYTHON
Si oui, comment?
So non quelle solution pouvez-vous me conseiller?


le module threading contient ce qu'il te faut.

exemple :

import threading
def hello():
print "hello, world"
nb
for i in range(nb):
t = threading.Timer(5.0, hello)
t.start()
while t.isAlive(): pass
del t

Cordialement,



Avatar
MC
Bonjour !

Réponse : oui.
Suggestion : lire la doc de Python. Beaucoup de choses s'éclaiciront.

--
@-salutations

Michel Claveau
Avatar
luc
Jean-Baptiste renard wrote:

while t.isAlive(): pass


Très mauvaise idée en général, cette ligne va consommer 100% de CPU pour
rien.

Il vaut mieux faire...

while t.isAlive(): time.sleep(0.1)

...ce qui ramène la consommation CPU à quasi rien du tout. Je sais, je
pinaille... :)

--
Luc Heinrich

Avatar
Eric Brunel
On Sun, 12 Nov 2006 16:58:58 +0100, Alain wrote:

Bonjour,

Je programme habituellement sous DELPHI/WINDOWS
J'y utilise des timers dont j'exploite l'évènement 'ontimer'


Si tu utilises un événement, cela veut dire que ton appli a une interface
graphique, n'est-ce pas? Quel est le toolkit que tu utilises en Python? Il
y a en général des notions de timers événementiels fournies par les
toolkits graphiques.
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"

Avatar
Michel Claveau
Bonsoir !

Je sais, je pinaille...




Non, pas du tout. C'est un aspect très important, notamment pour les
logiciels qui vont tourner sur un serveur, ou en tâche de fond.

Par expérience, je peux dire que la différence, en terme de
d'occupation du processeur, est énorme, pour un aussi petit détail.

C'est donc très bien de le rappeler.

--
@-salutations

Michel Claveau



Avatar
Michel Claveau
Bonsoir !

Je crois que, sous delphi, il n'avait guère le choix.

Un avantage de Python, c'est que le threading fait partie du langage,
et n'est pas lié à un GUI.

Maintenant, savoir si ce qui provient d'un thread doit être, ou non,
considéré comme un "évènement", me semble plus relever de la logomachie
que du développement. Mais, ça pourrait donner lieu à de fructueux
échanges.
D'ailleurs, pour ceux intéressés par cette démarche, je conseille de
jeter un oeil sur sur Candygram (http://candygram.sourceforge.net/)
Mais, laissez tomber la liste de diffusion, elle est spammée à mort...

--
@-salutations

Michel Claveau