Introduction
Il est possible avec certains modules comme PyInline ou Weave d'intégrer du code d'autres langages à l'intérieur même du code python.
Il est en fait compilé en direct à l'intérieur du code python. Il faut évidement avoir présent sur la machine un compilateur du langage concerné. (Pour le C, en environnement Windows, VC++6.0 fonctionne tel quel).
Analyse de performance de code "inline":
http://www.scipy.org/site_content/weave/python_performance.html
Test simple avec InLine
Environnement:
-Microsoft Visual C++ 6.0 installé
-Python 2.3 installé
Installation:
-dl package PyInline 0.03 sur http://sourceforge.net/project/showfiles.php?group_id=34103&release_id=50179
-lancer python setup.py install
Test:
-dans l'interpréteur python:
>>> import PyInline >>> m= PyInline.build(code=""" ... int my_add(int a,intb) { ... return a+b; ... } ... """,language="C") running build running build_ext building '_PyInline_de9a14d2a39aa28e67cab7f2a2a9727d' extension creating build creating build\temp.win32-2.3 creating build\temp.win32-2.3\Release C:\Program Files\Microsoft Visual Studio\VC98\BIN\cl.exe /c /nologo /Ox /MD /W3 /GX /DNDEBUG -IC:\Python23\include -IC:\Python23\PC /Tc_PyInline_de9a14d2a39aa28 e67cab7f2a2a9727d.c /Fobuild\temp.win32-2.3\Release\_PyInline_de9a14d2a39aa28e67 cab7f2a2a9727d.obj _PyInline_de9a14d2a39aa28e67cab7f2a2a9727d.c creating build\lib.win32-2.3 C:\Program Files\Microsoft Visual Studio\VC98\BIN\link.exe /DLL /nologo /INCREME NTAL:NO /LIBPATH:C:\Python23\libs /LIBPATH:C:\Python23\PCBuild /EXPORT:init_PyIn line_de9a14d2a39aa28e67cab7f2a2a9727d build\temp.win32-2.3\Release\_PyInline_de9 a14d2a39aa28e67cab7f2a2a9727d.obj /OUT:build\lib.win32-2.3\_PyInline_de9a14d2a39 aa28e67cab7f2a2a9727d.pyd /IMPLIB:build\temp.win32-2.3\Release\_PyInline_de9a14d 2a39aa28e67cab7f2a2a9727d.lib Creating library build\temp.win32-2.3\Release\_PyInline_de9a14d2a39aa28e67cab 7f2a2a9727d.lib and object build\temp.win32-2.3\Release\_PyInline_de9a14d2a39aa2 8e67cab7f2a2a9727d.exp >>> m.my_add(3,8) 11 |
Aucun commentaire:
Enregistrer un commentaire