IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Modifier une variable Python à partir d'un programme C (API)


Sujet :

Linux

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mai 2007
    Messages : 52
    Par défaut Modifier une variable Python à partir d'un programme C (API)
    Salut à toutes et à tous,

    Je suis en train de développer une application API Python/C.
    Dans Python, je déclare une variable et je suis l'évolution de cette variable. Or, cette variable ne doit évoluée qu'au sein de du programme C. L'application Python pourrait être vue comme un wrapper qui vérifie si le programme C est terminé. Ce dernier, pour déclarer qu'il a fini, change la valeur de cette variable (Mais NE LA RETOURNE PAS) que Python vérifie.

    Pour celà, le programme C doit interagir immédiatement sur l'adresse où Python a déclarer la variable. Quelqu'un a une idée de comment faire ça ?

    Merci par avance,
    Mickaël

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Par défaut
    Ton problème est intéressant, mais il faudrait être plus précis.
    Estc-e que tu as un programme C qui embarque un interpréteur Python, ou est-ce que tu interfaces une librairie écrite en C avec Python ?

  3. #3
    Membre chevronné Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Par défaut
    Salut,

    Que le code C change la valeur de la variable sans la retourner me semble difficile.
    Si j'ai bien compris dans Python tu crées une variable puis elle est modifiée par le code C, donc il s'agit incontestablement d'une fonction C.

    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      #!/usr/bin/python
      from myModule import *
      a = 25
      a =  myFunction(a)

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ...
      static PyObject* py_myFunction(PyObject* self, PyObject* args)
      {
        double x;
        PyArg_ParseTuple(args, "d", &x);
        // ...
        return Py_BuildValue("d", x*x);
      }
    ...

  4. #4
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mai 2007
    Messages : 52
    Par défaut
    Salut à tous,

    Merci pour vos interventions. J'ai finalement trouvé la solution au problème. En fait, une méthode très facile de parvenir à ses fins est de créer une variable dans Python à l'aide de Numeric (écrit en C). Ensuite, passer cette variable à programme C reste un jeu d'enfant. Le programme C ne fera pas une copie de l'objet, mais créera un pointeur vers cet objet (Donc, pas besoin de tout essayer pour connaître l'adresse de l'objet en Python, ce qui de toute façon est impossible, car C s'en charge lui même! )

    Ensuite, lorsqu'on change la valeur de cette variable, Python va lire directement à l'adresse à laquelle la variable avait été stockée et retourne la valeur lue.

    Le meilleur moyen de s'en rendre compte est de lancer un programme Python qui va appeler votre bibliothèque en écrite en C qui prend comme argument l'objet Numeric. La fonction C ne fera rien d'autre qu'incrémenter par exemple une valeur contenu dans l'objet transmis, et Python, à temps régulier écrira cette valeur.

    Merci encore,
    Mickaël

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/05/2010, 14h02
  2. modifier une variable d'une classe à partir d'une autre classe
    Par Rniamo dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 16/03/2008, 20h40
  3. Passer une variable python en javascript?
    Par Sayrus dans le forum Zope
    Réponses: 6
    Dernier message: 19/06/2006, 10h29
  4. Modifier une variable globale
    Par bahet dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/04/2006, 18h04
  5. modifier une variable dans un fichier
    Par Guismay dans le forum Langage
    Réponses: 7
    Dernier message: 11/09/2005, 19h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo