Comments on: Appeler du code C depuis Python avec ctypes http://sametmax.com/appeler-du-code-c-depuis-python-avec-ctypes/ Du code, du cul Sat, 07 Nov 2015 11:08:18 +0000 hourly 1 http://wordpress.org/?v=4.1 By: Sam http://sametmax.com/appeler-du-code-c-depuis-python-avec-ctypes/#comment-153372 Mon, 29 Dec 2014 11:21:36 +0000 http://sametmax.com/?p=5811#comment-153372 Il faut créer un array compatible avec du code C:

>>> import ctypes
>>> data = [1, 2, 3]
>>> # création d'un array d'int de taille 3
>>> TypeArray = ctypes.c_int * len(data)
>>> array = TypeArray(*data)
>>> array
<__main__.c_int_Array_3 object at 0x7ff84f9f3e18>
>>> array[0]
1
]]>
By: Soso http://sametmax.com/appeler-du-code-c-depuis-python-avec-ctypes/#comment-153363 Mon, 29 Dec 2014 02:49:14 +0000 http://sametmax.com/?p=5811#comment-153363 Bonjour. Bon artircle !

J’aimerais comprend comme passer une liste d’int() python a ma fonction C.

en C

maFonction (int **buffer1, int **buffer2, int *size){}

appel python

maLib.maFonction(self.buffer1, self.buffer2, self.size)

Msg d’erreur python

Traceback (most recent call last):

File "monFichier.py", line 37

maLib.maFonction(self.buff1, self.buff2, c_int(self.size))

ctypes.ArgumentError: argument 1: : Don't know how to convert parameter 1

Merci par avance :)

]]>
By: Sam http://sametmax.com/appeler-du-code-c-depuis-python-avec-ctypes/#comment-15981 Thu, 21 Nov 2013 13:45:21 +0000 http://sametmax.com/?p=5811#comment-15981 D’abord, je t’invite à lire ceci. Ensuite, je te recommande de l’appliquer sur le forum de l’afpy, puisque des commentaires de blog ne sont pas un bon moyen de communiquer pour aider au debug.

]]>
By: Joks http://sametmax.com/appeler-du-code-c-depuis-python-avec-ctypes/#comment-15980 Thu, 21 Nov 2013 12:17:43 +0000 http://sametmax.com/?p=5811#comment-15980 Bonjour.

tout d’abord je tiens a vous remercier pour cet EXCELENT tuto ! simple, et tres bien expliqué !

J’ai crée une DLL qui fonctionne. je l’ai tester avec un autre programme en C, et il arrive bien à utiliser les fonction de cette DLL.
Néanmoins cela ne fonctionne pas lors de l’interfaçage avec python…
toutes vos étapes fonctionnent jusqu’à ce que j’éssaie d’utiliser une fonction de la dll :
res = zelib.addition(2, 3)
me renvoie : AttibuteError: function ‘multiplier’ not found

Auriez-vous une solution ? car cela fait plusieurs jours que je n’en trouve pas… (j’ai tenté de jeter un oeil à la doc python mais sans résultats…) ^^’

Je vous en serais infiniment reconnaissant si vous pouviez m’aider.

cordialement.

]]>
By: FX http://sametmax.com/appeler-du-code-c-depuis-python-avec-ctypes/#comment-8802 Sat, 11 May 2013 10:22:24 +0000 http://sametmax.com/?p=5811#comment-8802 Je connaissais pas non plus. Nous a priori on n’a pas trop de libs existantes, tout le code est entièrement fait main avec amour, donc Cython ou C c’est bien plus approprié ;)

(D’ailleurs, je suis en train de commencer à tester Cython, c’est vraiment sympa, tu fais la même chose qu’en C en plus sûr et en 3 fois moins de lignes, mais ça manque un poil de doc pour le moment…)

]]>
By: Sam http://sametmax.com/appeler-du-code-c-depuis-python-avec-ctypes/#comment-8772 Fri, 10 May 2013 11:30:36 +0000 http://sametmax.com/?p=5811#comment-8772 Je ne connaissais pas le projet.

]]>
By: kontre http://sametmax.com/appeler-du-code-c-depuis-python-avec-ctypes/#comment-8767 Fri, 10 May 2013 08:05:08 +0000 http://sametmax.com/?p=5811#comment-8767 Vous avez essayé de comparer avec cffi ?

]]>
By: FX http://sametmax.com/appeler-du-code-c-depuis-python-avec-ctypes/#comment-8720 Mon, 06 May 2013 20:09:23 +0000 http://sametmax.com/?p=5811#comment-8720 @Kontre: Héhé, ça conviendrait parfaitement à mon boulot, merci pour les liens, je vais jeter un oeil quand j’aurai le temps!

Nous on ne va pas aussi loin que plusieurs Go, mais on a des TIFF de quelques 500Mo, donc les extensions C c’est carrément utile ;)

]]>
By: kontre http://sametmax.com/appeler-du-code-c-depuis-python-avec-ctypes/#comment-8719 Mon, 06 May 2013 19:27:02 +0000 http://sametmax.com/?p=5811#comment-8719 La plupart des gens rajoutent une extension dans setup.py, oui. Moi je fais de la recherche, donc je développe pour ma boite en interne et mes programmes sont utilisés par peut-être 5 personnes. J’ai bon espoir que ça monte autour de 10 ! ^^ Tout ça pour dire que j’ai pas de problème de déploiement. Je n’ai qu’un module en cython, mais il est central pour l’appli en question (affichage d’images de plusieurs Go) et je n’ai aucun souci de stabilité avec. J’atteins la vitesse d’exécution du même programme écrit en C, point de vue perfo ça dépote.

Pour l’utilisation, j’appelle le module comme un module python, avec pyximport : http://docs.cython.org/src/userguide/source_files_and_compilation.html#pyximport. Ça me permet notamment d’installer le module sur ma machine en mode “dev” (avec pip -e module par exemple) et le module est compilé automatiquement à l’import si besoin. Pour les tests et le développement c’est top.

Pour éviter les soucis de compilation, j’ai utilisé ce qui est indiqué dans la partie “MinGW + NumPy + pyximport at runtime” sur la page http://wiki.cython.org/InstallingOnWindows.

]]>
By: FX http://sametmax.com/appeler-du-code-c-depuis-python-avec-ctypes/#comment-8718 Mon, 06 May 2013 18:41:54 +0000 http://sametmax.com/?p=5811#comment-8718 @Kontre: Faut vraiment que je me penche dessus. J’ai un petit a priori négatif sur Cython pour le moment, j’ai un peu l’impression que c’est pas super stable. Je sais bien que des tas de trucs (comme SciPy) l’utilisent, mais j’hésite quand même.

Au niveau déploiment, je suppose que tu ajoutes juste une extension dans ton setup.py? Sinon tu l’utilises pour quel genre de projets?

Et puis je rejoins Etienne, si tu as des histoires à raconter sur des questions de Python/C/Ctypes/Cython, Sam, je suis preneur aussi!

]]>