Bonjour à tous,

Je suis en stage et je dois développer un "mini" logiciel qui avec 20 variables d'entrée me renvoie 4 réels. Pour des raisons pratiques, mon programme est en C mais j'utilise une interface python: je fais le lien entre les 2 langages avec le module distutils.core. Tout marche, jusqu'ici pas de problème. Voici le code simplifié:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
void MaFonction (double argument1, double argument2, ..., double argument20, double *sortie1, double *sortie2, double *sortie3, double *sortie4)
{
// Définition de tableaux utiles
double tableau1[]={300, 200, 50, 20, 20}
double tableau2[]={30, 10, 10, 5, 3}
 
*sortie1=truc_compliqué1(argument1, ..., argument20, tableau1, tableau2)
*sortie2=truc_compliqué2(argument1, ..., argument20, tableau1, tableau2)
*sortie3=truc_compliqué3(argument1, ..., argument20, tableau1, tableau2)
*sortie4=truc_compliqué4(argument1, ..., argument20, tableau1, tableau2)
}
 
// Lien avec le langage Python:
 
static PyObject *MaFonction_python(PyObject *self, PyObject *args)
{
	double argument1, ..., argument20;
	double sortie1, ..., sortie4
	if (!PyArg_ParseTuple(args, "dddddddddddddddddddd", &argument1, ..., &argument20)
	return NULL;
	MaFonction(argument1, ..., argument20, &sortie1, ..., &sortie4);
	return Py_BuildValue("dddd", sorte1, ..., sortie4);
}
 
static PyMethodDef mymodMethods[] = {
  {"MonModule", MaFonction_python, METH_VARARGS,"Calcul quelque chose"},
  {NULL, NULL, 0, NULL}
};
 
PyMODINIT_FUNC initMaFonction(void)
{
  (void) Py_InitModule("MaFonction", mymodMethods);
}
 
int main(int argc, char *argv[])
{
  Py_SetProgramName(argv[0]);
  Py_Initialize();
  initMaFonction();
  Py_Exit(0);
  return 0;
}
Après compilation une librairie .so est créée, je modifie donc sans problème la valeur des paramètres d'entrée (arguement1, etc.) et j’obtiens les sorties correspondantes.
Là est mon problème: j'aimerai maintenant passer des tableaux en paramètres sous python (les même tableaux définis plus haut dans le code C: tableau1 et tableau2) au lieu de simples réels comme j'ai fait jusque là, mais je ne sais pas comment faire. Pouvez-vous m'aider? Merci!