PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.python > Si qq comprend l'anglais...
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Si qq comprend l'anglais...

Réponse
 
LinkBack Outils de la discussion
Vieux 26/10/2007, 12h41   #1
Méta-MCI \(MVP\)
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Si qq comprend l'anglais...

Bonjour !

Il y a une conversation asynchrone, sur gname.org (relais NNTP de listes de diffusion) sur un sujet
qui m'intéresse, mais en anglais, ce qui fait que je n'arrive pas à suivre.

En gros : il y a un pythonien qui a utilisé les DLL de Python.NET avec IronPython, de façon à
permettre à ce dernier un bien meilleur accès à PythonC.

Mais, ça, c'est ce que j'ai cru comprendre. Suis-je en phase ? Et, où cela en est-il ? Au
balbutiements ? à la faisabilité ? Est-ce utilisable ? Est-ce dispo ? Où ?

Merci d'avance à toute personne qui fournira des explications plus justes, plus complètes, et en
français...

@+

Michel Claveau



  Réponse avec citation
Vieux 26/10/2007, 23h29   #2
Amaury Forgeot d'Arc
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Si qq comprend l'anglais...

Méta-MCI (MVP) a écrit :
> Bonjour !
>
> Il y a une conversation asynchrone, sur gname.org (relais NNTP de listes
> de diffusion) sur un sujet qui m'intéresse, mais en anglais, ce qui fait
> que je n'arrive pas à suivre.
>
> En gros : il y a un pythonien qui a utilisé les DLL de Python.NET avec
> IronPython, de façon à permettre à ce dernier un bien meilleur accès à
> PythonC.
>
> Mais, ça, c'est ce que j'ai cru comprendre. Suis-je en phase ? Et, où
> cela en est-il ? Au balbutiements ? à la faisabilité ? Est-ce utilisable
> ? Est-ce dispo ? Où ?
>
> Merci d'avance à toute personne qui fournira des explications plus
> justes, plus complètes, et en français...


J'ai trouvé cette conversation:
http://thread.gmane.org/gmane.comp.p.../670/focus=679
qui pointe vers cet article:
http://www.voidspace.org.uk/ironpyth...tensions.shtml

Si j'ai bien compris (j'explique lentement, pour éviter de me perdre) :

Il s'agit d'un Assembly (un package .NET) qui embarque un interpréteur
python classique (python25.dll, quoi).
On a donc la possibilité d'appeler à partir de .NET des fonction de
l'API python C: Il y a une conversion naturelle pour les types simples
du C (int, char*), et les PyObject* sont emballés dans un objet .NET qui
sert de 'proxy'.

Un exemple: l'assembly définit la fonction Import, qui appelle
naturellement la fonction C PyImport_ImportModule(char* name) (celle-ci:
http://docs.python.org/dev/c-api/uti...t_ImportModule ).
Elle renvoie un PyObject* (le module). Ce pointeur est emballé dans un
objet .NET.
La classe de cet objet définit plusieurs méthodes. Par exemple,
GetAttr(name), dont l'implémentation effectue un appel à la fonction C
PyObject_GetAttr. Ainsi on a accès à un membre de l'objet considéré.
Je suppose que la plupart des méthodes "abstraites" (celles-ci:
http://docs.python.org/dev/c-api/abstract.html ) sont accessibles de
cette manière.

Tout ceci permet d'utiliser un interpréteur PythonC classique à partir
de .NET, avec toutes ses extensions disponibles.

Maintenant, IronPython peut facilement utiliser ces objets:
(ce qui suit est du code IronPython)
class PythonObject:
def __init__(self, real):
self.real = real
def __getattr__(self, name):
return PythonObject(self.real.GetAttr(name))
# toutes les autres méthodes en __xxx___ sur le même modèle

Et l'objet qui vient de CPython est accessible de manière presque
transparente!

presque... ça ne marche pas à tous les coups:

- les objets CPython qui redéfinissent __getattr__ ne sont pas
correctement emballés.

- L'auteur a choisi de convertir (donc copier) les types simples, dès
qu'ils passent de IronPython à CPython. En particulier, si une fonction
modifie une liste passée en argument, IronPython n'y verra rien!

- pour les objets emballés (non convertis), les méthodes du genre
'isinstance' ne fonctionneront pas correctement. Idem pour les exceptions.

- Seuls les types basiques peuvent être passés à CPython. Par exemple,
il semble impossible de passer un 'file' IronPython à une fonction de
type cPickle.load, ce qui est pourtant utile
(http://docs.python.org/dev/library/p...ml#pickle.load ) : il
faudrait que CPython sache appeler une méthode .NET. Il est possible de
faire fonctionner ce genre de "callback", mais ce n'est pas implémenté.


Au total, cela ressemble assez à un mécanisme d'appels de fonctions à
distance (Remote Procedure Call), comme Pyro qui me semble assez abouti
(http://pyro.sourceforge.net/documentation.html ). ça marche pour les
types de base, mais il ne faut pas croire que tout est transparent.

Désolé d'avoir été si long... et j'espère n'avoir embrouillé personne
avec ma salade de pythons.

--
Amaury Forgeot d'Arc




  Réponse avec citation
Vieux 26/10/2007, 23h46   #3
Méta-MCI \(MVP\)
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Si qq comprend l'anglais...

Bonsoir !

C'est plutôt clair. Merci d'avoir passé du temps à résumer le fil des discussions.

Les limites sont presque les mêmes que lorsque je veux, par exemple, intégrer Python et JScript ou
Ruby ; ce qui fait que j'ai une impression de déjà vu.

Finalement, j'ai bien fait de demander de l'aide, car mon anglais est vraiment trop insuffisant.

Merci encore.

@-salutations

Michel Claveau


  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 20h37.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,09663 seconds with 11 queries