Moins intuitif pour toi et pour moi, parce que l'on connais déjà os.popen. Prend un débutant qui se farcit les docs... choisir le bon popen/spawn.../exec... et bien l'utiliser n'est pas évident, et en plus ces fonctions ont l'ordre des valeurs de retour qui peut différer... Là, avec la doc, ils t'indiquent comment faire pour mimer l'ancien usage ainsi que (AMA plus intéressant pour les nouveaux venus) les utilisations en Pipe shell.
Et c'est plus sécure: là, tu indiques explicitement que tu vas aller utiliser le shell pour lancer la commande, donc qu'il peut y avoir une tromperie à ce niveau - tu dois en être conscient.
Ceci dit, tant que tu restes en Python 2.x, tu peux continuer avec os.popen (mon treetaggerwrapper.py l'utilise encore, et il tourne très bien avec Python 2.6).
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Là, je te suis, on aurais qq chose comme sur la doc PHP, où il peut y avoir des contributions à la suite du contenu, ça permettrais à des utilisateurs de rapporter des expériences, donner plus d'exemples.
La doc s'est (nettement) améliorée - elle est mieux structurée qu'avant - mais il y manque encore ce côté participatif/retour d'expérience.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
C'est une seule fonctionnalité: lancer un process séparé.
Après, la façon dont tu identifies le binaire, comment tu communiques avec ce process, comment tu fournis les paramètres, etc... ce ne sont que des options.
Après, tu as le communicate() pour les besoins simples (mais les plus courants), et tu peux utiliser des pipes vers stdin/stdout/stderr pour les choses plus compliquées.
Enfin, les os.spawn/exec, les popen & Co sont disponibles dans les versions 2.x de Python, ça ne change qu'à la version 3 qui est une évolution majeure du langage avec une réorganisation des librairies (et tu peux avoir la V2 et la V3 en parallèle).
Bref, pour moi c'est un journal en effet inutile à la base (comme indiqué dans le titre)... mais qui donnera peut-être des indications à certains.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Il me semble que la gestion de la récursion terminale était dans Python stackless, peut-être est-ce dans pypy. Google sur tail recursion pypy donne des pistes.
Help on built-in function setrecursionlimit in module sys:
setrecursionlimit(...)
setrecursionlimit(n)
Set the maximum depth of the Python interpreter stack to n. This
limit prevents infinite recursion from causing an overflow of the C
stack and crashing Python. The highest possible limit is platform-
dependent.
In [1]: import sys
In [2]: sys.getrecursionlimit()
Out[2]: 1000
In [3]: sys.setrecursionlimit(10000)
In [4]: def fac(n):
...: def fac_aux(n, p):
...: if n == 1:
...: return p
...: return fac_aux(n - 1, n*p)
...: return fac_aux(n, 1)
...:
In [5]: fac(5)
Out[5]: 120
In [6]: fac(999)
Out[6]: 402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
[PS. je suis preneur de ta solution pour mettre du Python dans les commentaires linuxfr]
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Ben tu es prévenu alors tu passes outre le warning, tu utilises directement les pipes, et c'est à toi de contrôler que les communications se passent bien, éventuellement à avoir un thread qui écrive sur le stdin du processus fils, et un autre qui lise sur son stdout pour récupérer les résultats (si tu n'as que de la lecture, un seul thread suffit).
Note que tu es dépendant de la façon dont l'autre process - ainsi que le système - gère les buffers d'entrée/sortie/pipe.
Mais ce genre de problème n'est pas lié à l'existence de subprocess. J'ai un code de 2005 (treetaggerwrapper.py) qui utilise os.popen2, et qui a besoin d'un thread séparé pour pouvoir alimenter un process externe et en même temps récupérer ce qu'il génère.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Les deux installations cohabitent très bien, chacune dans son répertoire. Il faut juste penser à lancer python3 au lieu de python en ligne de commande.
J'aimerais bien voir la source (et la date) d'une telle recommandation.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
J'ai rencontré J.C.Baillie il y a quelques années, qui m'avait fait une présentation d'Urbi, qui m'avait fortement intéressé. Il devait alors le passer en open-source, et en même temps trouver le moyen de faire continuer son développement par une entité hors de l'ENSTA. Les deux buts ont dû sembler incompatibles ou du moins difficiles à concilier à l'époque, en tout cas le manque de code accessible avec une license claire nous avait conduit à abandonner cette option.
Mais c'était déjà très intéressant, depuis ça a dû s'améliorer, n'hésitez pas à tester. Et AMA ça devrait pouvoir aussi être utilisé pour des systèmes plus orientés automatique / domotique.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
C'est un très vieux système, super souple au niveau des infos que tu veux mettre, et c'est très pérenne pour les données. Par contre c'est méchamment long quand tu veux faire une recherche ou un tri.
[bon, c'est pas vendredi, mais c'est le WE prolongé - et ça me coupe dans les corrections!]
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Ouaip, mais quand tu la fait tomber, la micro-SD, ben t'as beaucoup plus de mal à la retrouver que la SD... et faut pas avoir de gros doigts pour la manipuler.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Ah, moi c'était la Slackware version gravée Ikarios, sauf erreur en version 4 à l'époque, avec un premier PC d'occaz... mais je ne sais plus quelle année... 95 peut-être. Ils avaient aussi des packages de tout plein de choses (outils GNU en tous genres).
Mais c'est vrai que ça fait bien longtemps que je n'achète plus les distribs en CDs/DVDs - pour mes Mandrivas c'est paiement en ligne et téléchargement..
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Si c'est juste pour définir une norme de plugins... OSGi est hyper sur-dimensionné, regarde tout ce qu'il intègre... c'est une usine à gaz. Ca répond à un besoin de développements industrialisés, moyens importants et procédures très strictes, déploiement à grande dimension. Mais ça ne peut pas répondre aux besoins courants, trop lourd à utiliser lorsqu'on a des besoins simples.
Dans le même esprit, il y a CORBA, qui avait aussi défini pas mal de choses pour l'intégration de composants, et là en multi-plateforme multi-langages. C'est utilisé, mais très peu, même problème qu'OSGi... le coût d'accès pour les développeurs est élevé.
Et perso, je ne suis pas sûr que dans ce domaine on puisse trouver un logiciel qui réponde à l'hétérogéniéité des besoins... sans être une usine à gaz qui rebutera beaucoup de développeurs.
Tu veux des plugins avec du graphiqme, utilise par exemple les KParts, justement, il y a un portage de KDE sous Windows (si tu recherches le multi-plateformes - bon, je ne sais pas où ils en sont, pas plus que le portage sous Mac s'il y en a un)
Tu as juste besoin que des composants communiquent, regarde DBus.
Encore un autre, tu cibles COM/DCOM/ActiveX, et tu utilises Wine ou de la virtualisation :-) [peut-être plus facile d'abord que OSGi pour un développeur]
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Pourquoi les gens critiquent toujours python avec de mauvais argumen
Posté par lolop (site web personnel) . En réponse au journal Journal inutile : Python c'est complêtement pourri, j'ai un exemple. Évalué à 2.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Enfer et damnation !
Posté par lolop (site web personnel) . En réponse au journal Journal inutile : Python c'est complêtement pourri, j'ai un exemple. Évalué à 2.
Et c'est plus sécure: là, tu indiques explicitement que tu vas aller utiliser le shell pour lancer la commande, donc qu'il peut y avoir une tromperie à ce niveau - tu dois en être conscient.
Ceci dit, tant que tu restes en Python 2.x, tu peux continuer avec os.popen (mon treetaggerwrapper.py l'utilise encore, et il tourne très bien avec Python 2.6).
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Pourquoi les gens critiquent toujours python avec de mauvais argumen
Posté par lolop (site web personnel) . En réponse au journal Journal inutile : Python c'est complêtement pourri, j'ai un exemple. Évalué à 2.
La doc s'est (nettement) améliorée - elle est mieux structurée qu'avant - mais il y manque encore ce côté participatif/retour d'expérience.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Enfer et damnation !
Posté par lolop (site web personnel) . En réponse au journal Journal inutile : Python c'est complêtement pourri, j'ai un exemple. Évalué à 2.
Après, la façon dont tu identifies le binaire, comment tu communiques avec ce process, comment tu fournis les paramètres, etc... ce ne sont que des options.
Après, tu as le communicate() pour les besoins simples (mais les plus courants), et tu peux utiliser des pipes vers stdin/stdout/stderr pour les choses plus compliquées.
Enfin, les os.spawn/exec, les popen & Co sont disponibles dans les versions 2.x de Python, ça ne change qu'à la version 3 qui est une évolution majeure du langage avec une réorganisation des librairies (et tu peux avoir la V2 et la V3 en parallèle).
Bref, pour moi c'est un journal en effet inutile à la base (comme indiqué dans le titre)... mais qui donnera peut-être des indications à certains.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Pourquoi les gens critiquent toujours python avec de mauvais argumen
Posté par lolop (site web personnel) . En réponse au journal Journal inutile : Python c'est complêtement pourri, j'ai un exemple. Évalué à 3.
En cherchant un peu sur tail recursion python, on trouve pourquoi ça ne sera pas de façon standard dans le langage:
http://neopythonic.blogspot.com/2009/04/tail-recursion-elimi(...)
Et diverses solutions plus ou moins bonne pour le faire quand même:
http://paulbutler.org/archives/tail-recursion-in-python/
http://www.teamrubber.com/blog/python-tail-optimisation-usin(...)
http://fiber-space.de/wordpress/?p=349
Bon, si tu en as absolument besoin... ben tu ne feras pas de Python.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Pourquoi les gens critiquent toujours python avec de mauvais argumen
Posté par lolop (site web personnel) . En réponse au journal Journal inutile : Python c'est complêtement pourri, j'ai un exemple. Évalué à 2.
(bon, après c'est éventuellement de la gestion de récursion terminale)
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Pourquoi les gens critiquent toujours python avec de mauvais argumen
Posté par lolop (site web personnel) . En réponse au journal Journal inutile : Python c'est complêtement pourri, j'ai un exemple. Évalué à 5.
setrecursionlimit(...)
setrecursionlimit(n)
Set the maximum depth of the Python interpreter stack to n. This
limit prevents infinite recursion from causing an overflow of the C
stack and crashing Python. The highest possible limit is platform-
dependent.
In [1]: import sys
In [2]: sys.getrecursionlimit()
Out[2]: 1000
In [3]: sys.setrecursionlimit(10000)
In [4]: def fac(n):
...: def fac_aux(n, p):
...: if n == 1:
...: return p
...: return fac_aux(n - 1, n*p)
...: return fac_aux(n, 1)
...:
In [5]: fac(5)
Out[5]: 120
In [6]: fac(999)
Out[6]: 402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
[PS. je suis preneur de ta solution pour mettre du Python dans les commentaires linuxfr]
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Pourquoi les gens critiquent toujours python avec de mauvais argumen
Posté par lolop (site web personnel) . En réponse au journal Journal inutile : Python c'est complêtement pourri, j'ai un exemple. Évalué à 3.
Note que tu es dépendant de la façon dont l'autre process - ainsi que le système - gère les buffers d'entrée/sortie/pipe.
Mais ce genre de problème n'est pas lié à l'existence de subprocess. J'ai un code de 2005 (treetaggerwrapper.py) qui utilise os.popen2, et qui a besoin d'un thread séparé pour pouvoir alimenter un process externe et en même temps récupérer ce qu'il génère.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Nouveautés
Posté par lolop (site web personnel) . En réponse à la dépêche Fedora 13 « Goddard », parée au décollage. Évalué à 2.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Nouveautés
Posté par lolop (site web personnel) . En réponse à la dépêche Fedora 13 « Goddard », parée au décollage. Évalué à 2.
Les deux installations cohabitent très bien, chacune dans son répertoire. Il faut juste penser à lancer python3 au lieu de python en ligne de commande.
J'aimerais bien voir la source (et la date) d'une telle recommandation.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Nouveautés
Posté par lolop (site web personnel) . En réponse à la dépêche Fedora 13 « Goddard », parée au décollage. Évalué à 3.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Premiere impression à chaud
Posté par lolop (site web personnel) . En réponse à la dépêche Fedora 13 « Goddard », parée au décollage. Évalué à 7.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Dommage...
Posté par lolop (site web personnel) . En réponse à la dépêche Passage d'Urbi en Open source. Évalué à 5.
J'ai rencontré J.C.Baillie il y a quelques années, qui m'avait fait une présentation d'Urbi, qui m'avait fortement intéressé. Il devait alors le passer en open-source, et en même temps trouver le moyen de faire continuer son développement par une entité hors de l'ENSTA. Les deux buts ont dû sembler incompatibles ou du moins difficiles à concilier à l'époque, en tout cas le manque de code accessible avec une license claire nous avait conduit à abandonner cette option.
Mais c'était déjà très intéressant, depuis ça a dû s'améliorer, n'hésitez pas à tester. Et AMA ça devrait pouvoir aussi être utilisé pour des systèmes plus orientés automatique / domotique.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Bristol
Posté par lolop (site web personnel) . En réponse au journal brain backup. Évalué à 3.
[bon, c'est pas vendredi, mais c'est le WE prolongé - et ça me coupe dans les corrections!]
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Encore un probleme pour l'affichage..
Posté par lolop (site web personnel) . En réponse à la dépêche Nouvelle version 2.6.34 du noyau Linux. Évalué à 9.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Les migrations
Posté par lolop (site web personnel) . En réponse au journal Sap achète Sybase.. Évalué à 3.
http://www.sauvonsluniversite.com/spip.php?article3682
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Les migrations
Posté par lolop (site web personnel) . En réponse au journal Sap achète Sybase.. Évalué à 3.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# La première victime d'Hadopi
Posté par lolop (site web personnel) . En réponse au journal Avec Free t'es (parfois) pris pour un con ?. Évalué à 5.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Copies d'écran ?
Posté par lolop (site web personnel) . En réponse à la dépêche Sortie de Clementine 0.3, le successeur de Amarok 1.4. Évalué à 2.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Don't buy expansive hardware !
Posté par lolop (site web personnel) . En réponse au journal Brainstorming : ce que Linux a de mieux que mac os. Évalué à 2.
Non non, un iPhone dilaté, c'est un iPad (modulo qu'il perd ses capacités téléphoniques lors de la dilatation).
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Mémoire
Posté par lolop (site web personnel) . En réponse à la dépêche Une liseuse libre pour lire des livres libres. Évalué à 4.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Mais pourquoi donc répondez-vous à ce Troll du figaro ?
Posté par lolop (site web personnel) . En réponse au journal Linux : Mandriva à vendre. Évalué à 4.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Ma première distrib en 1998
Posté par lolop (site web personnel) . En réponse au journal Ikarios n'est plus. Évalué à 4.
Mais c'est vrai que ça fait bien longtemps que je n'achète plus les distribs en CDs/DVDs - pour mes Mandrivas c'est paiement en ligne et téléchargement..
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: API ?
Posté par lolop (site web personnel) . En réponse au journal Pulseaudio vs JACK. Évalué à 9.
Ça c'est un truc que je n'oserais pas écrire sans être un développeur connaissant en détail la structure et l'implémentation de PA...
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Comparaison avec Eclipse
Posté par lolop (site web personnel) . En réponse à la dépêche Sortie de KDevelop 4.0. Évalué à 2.
Dans le même esprit, il y a CORBA, qui avait aussi défini pas mal de choses pour l'intégration de composants, et là en multi-plateforme multi-langages. C'est utilisé, mais très peu, même problème qu'OSGi... le coût d'accès pour les développeurs est élevé.
Et perso, je ne suis pas sûr que dans ce domaine on puisse trouver un logiciel qui réponde à l'hétérogéniéité des besoins... sans être une usine à gaz qui rebutera beaucoup de développeurs.
Tu veux des plugins avec du graphiqme, utilise par exemple les KParts, justement, il y a un portage de KDE sous Windows (si tu recherches le multi-plateformes - bon, je ne sais pas où ils en sont, pas plus que le portage sous Mac s'il y en a un)
Tu as juste besoin que des composants communiquent, regarde DBus.
Encore un autre, tu cibles COM/DCOM/ActiveX, et tu utilises Wine ou de la virtualisation :-) [peut-être plus facile d'abord que OSGi pour un développeur]
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN