Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lancement d'un programme tiers.

Avec Blender

    27 juin 2011 à 12:22:58

    Salut à tous !
    Mon problème est assez atypique, malgré le titre qui doit revenir assez souvent, parce que j'utilise Python avec Blender et plus précisément son GameEngine (et non pour une Add-on).
    Or, il faut savoir que les scripts dans le moteur de jeu ne sont pas exécutés une seule fois avec une boucle principale comme pour un programme classique, mais ils sont exécutés à chaque boucle. En fait, la boucle principale, on ne la voit pas vraiment, mais lorsque l'on fait un script, il faut prendre en compte le fait qu'il doit avoir une exécution très rapide, à savoir pas de boucles ni autres choses du même genre.
    Ce que j'aimerais faire, c'est de lancer un autre script en parallèle du jeu. J'ai donc tenté d'utiliser le multi threading avec le module future, mais lorsque le script arrive à sa fin, il attend que tous les threads soient eux aussi terminés, donc que le script parallèle s'arrête. Du coup il est plus parallèle du tout.
    J'ai tenté aussi Popen, mais je connais pas bien, donc ça n'a rien donné non plus.
    Le module _thread fonctionne bien dans le sens où les tâches s'exécutent bien en parallèle, mais c'est parce que les threads dans Blender sont simulés. Je perds donc beaucoup de rapidité d'exécution, ce qui ne me va pas du tout puisque je crée un serveur.

    Si quelqu'un pouvait trouver une solution, ce serait intéressant, parce que ça fait longtemps que je cherche sans trouver.
    Pour le moment, je me contenterais de _thread.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      2 mars 2012 à 16:56:35

      Si tu dis que les thread dans Blender sont simulés je te conseille d'utiliser l'objet Thread de la librairie threading et la méthode call de la librairie subprocess

      oublient pas les imports :
      from threading import Thread
      from subprocess import call

      La méthode call peut être utilisé de deux manière :
      call("python /truc/bidule/monprogramme.py") ou call(['python','/truc/bidule/monprogramme.py'])
      • Partager sur Facebook
      • Partager sur Twitter

      Lancement d'un programme tiers.

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown