Se connecter / S'enregistrer
Votre question

[Python] Probleme lors de la création d'un processus léger

Tags :
  • Counter Strike
  • Programmation
Dernière réponse : dans Programmation
21 Septembre 2008 18:32:49

Bonjour à tous,

Je viens de vouloir créer un processus léger.. Malheureusement, il prend longtemps a s'exécuter.. il faut parfois attendre 1 minute avant qu'il ne s'execute..

Voici un bout de mon code :

  1. # -*- coding: Utf-8 -*-
  2.  
  3. import threading
  4.  
  5. def execution_de_mon_processus():
  6. es.msg ("processus executé")
  7.  
  8. def player_say (E):
  9. monProcessus = threading.Thread(None,execution_de_mon_processus,"mon_processus")
  10. monProcessus.start()


La définition player_say est exécutée a chaque fois qu'un joueur parle et es.msg ("") permet d'afficher un message dans le jeu (Jeu : Counter-Strike: Source & EventScripts)

Lorsqu'un joueur parle, ce n'est que 40 secondes voir 1 minute après qu'il ai parlé que le message s'affiche.. Nous avons donc pensé a un problème de priorité ?

Comment puis-je résoudre ce problème ?

Merci

A bientôt :) 

Autres pages sur : python probleme creation processus leger

a b L Programmation
21 Septembre 2008 18:46:46

Ce n'est probablement pas un problème de priorité (à quelques centaines de millisecondes près ok, mais certainement pas sur une minute ;)  ).

Dans player_say, ajoute l'affichage d'un message en tout début.
Si le temps entre les 2 message est long (ce qui m'étonnerait), alors c'est un problème de lancement du thread.
Si le premier message est long à afficher, et que les 2 sont affiché instantanément au bout d'une minute (ce qui me parait le plus probable), c'est que l'appel à player_say est très différé.
21 Septembre 2008 18:57:40

J'ai essayé ceci :

  1. # -*- coding: Utf-8 -*-
  2.  
  3. import threading
  4.  
  5. def execution_de_mon_processus():
  6. es.msg ("processus executé")
  7.  
  8. def player_say (E):
  9. es.msg ("avant-processus executé")
  10. monProcessus = threading.Thread(None,execution_de_mon_processus,"mon_processus")
  11. monProcessus.start()


Le message "avant-processus executé" s'affiche tout de suite mais "processus executé" s'est affiché bien plus longtemps après ! 30 secondes voir plus.. Je n'ai pas compté ^^

Tu penses que ca pourrait venir de quoi ?

Merci :) 

A bientôt ;) 
Contenus similaires
a b L Programmation
21 Septembre 2008 22:30:47

Essaie en créant une classe qui hérite de Thread.
  1. class TonThread(threading.Thread):
  2. def run(self):
  3. es.msg ("processus executé" )
  4.  
  5. def player_say (E):
  6. TonThread monProcessus
  7. monProcessus.start()


Si tu as toujours le problème c'est surement un problème d'inter-blocage de l'objet "es".
22 Septembre 2008 22:50:27

Problème de syntaxe = TonThread monProcessus
a b L Programmation
23 Septembre 2008 20:01:04

Oui je me suis trompé dans l'instanciation, mais tu aurais pu corriger par toi-même :p 
  1. monProcessus=TonThread()
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS