Aide demandée

13 views
Skip to first unread message

Constant Deniger

unread,
Dec 8, 2016, 2:24:10 PM12/8/16
to montrea...@googlegroups.com
Bonjour Toutes et Tous,

Depuis maintenant plusieurs mois, je développe un système sophistiqué de
tenue de temps pour professionnels.

Ce système est codé en Python 3 avec une interface en Tcl/Tk (tkinter).

J'en suis rendu à environ 80% d'une version utilisable (version 1.0). Le
code est réparti en neuf modules totalisant près de 15000 lignes de
code. Je prévois arriver à la version 1.0 vers la fin du mois de
janvier 2017.

Je ne suis pas un informaticien professionnel (i.e. avec un bacc en
informatique et plusieurs années d'expérience) et je ne travaille pas
pour un employeur dans le domaine de l'informatique. Pour moi, la
programmation est une seconde carrière, ce qui fait que je manque de
connaissances dans certains aspects de la pratique de la programmation.

D'où le présent message.

Je recherche une personne qui pourrait me donner trois ou quatre heures
de cours sur un sujet bien précis concernant la programmation en
Python. Plus précisément, je recherche quelqu'un qui pourrait me donner
des cours sur le logiciel Nuitka qui permet de traduire le code Python
en code de langage C. Tout ça dans le but de compiler le code de mon
système éventuellement. Évidemment, je suis prêt à rémunérer la personne
qui me donnerait ces cours. En fait, ce pourrait aussi être un autre
système que Nuitka, pourvu que ça donne du code compilé.

Si cet énoncé de mes besoins en cette matière n'est pas complet, il me
fera plaisir de répondre à toutes vos questions.

Vous pouvez me rejoindre en répondant au présent message.

Merci d'avance

Constant Deniger
cden...@gmail.com






Richard Vézina

unread,
Dec 8, 2016, 8:50:09 PM12/8/16
to montrea...@googlegroups.com
Salut,

As-tu regarder du côté de Pyrex (pas la sorte de verre), la librairie python qui permet d'exécuté ton code plus rapidement en lui permettant d'être exécuté en c directement : https://wiki.python.org/moin/Pyrex

Sinon y'à aussi une autre façon de faire rouler ton code plus rapidement sans aller jusque là, il s'agit d'utiliser un autre interpréteur que l'interpréteur python standard qui est codé en c. Pour ce faire tu peux regarder du côté de PyPy, une inplémentaiton de l'interpréteur python en python. Le simple fait de changer d'interpréteur pour PyPy par exemple peut augmenter la vitesse d'exécution de ton code de 20%. Par contre, il faut que ta base de code ainsi que les librairies utilisées puissent le supporter (qu'elles soient compatible PyPy). Une autre implémentation de l'interpréteur est IronPython qui n'a pas de GIL, celle-ci limite l'accès à plusieurs processeurs au cours de l'exécution dans le cas de l'interpréteur standard.

Finalement, il est possible probablement d'identifier le code qui est trop lent dans ton projet et de tenter de l'optimiser avant de songer à des approches plus complexes comme celle que tu envisage ou celles que j'ai décrit ci-dessus. Par exemple l'utilisation des list-comprehension ou des fonctions implémentés en c comme map() plutôt que des boucles. Aussi, la manière de codé les boucles peut y faire pour beaucoup, par exemple, est-ce nécessaire d'itéré jusqu'à la fin sur une liste quand tu as besoin d'accéder le 2e ou 3e éléments? Il est préférable de sortir de la boucle lorsque l'objectif est atteint... As-tu profiler ton code pour vérifier où se trouvait les goulots d'étranglement?

Richard



Constant Deniger
cden...@gmail.com






--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Montréal-Python.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse montrealpython+unsubscribe@googlegroups.com.
Pour envoyer un message à ce groupe, adressez un e-mail à montrealpython@googlegroups.com.
Visitez ce groupe à l'adresse https://groups.google.com/group/montrealpython .
Pour plus d'options, visitez le site https://groups.google.com/d/optout .

C.Deniger

unread,
Dec 9, 2016, 12:08:16 AM12/9/16
to montrea...@googlegroups.com
Bonjour,

Merci pour les suggestions. J'irai certainement regarder du côté de Pyrex et peut-être aussi du côté de PyPy mais pas du côté de IronPython pcq cela limite le produit à Windows.

Je me rends compte que je n'ai pas précisé mon objectif: je cherche à obtenir une version compilée non pas pour gagner de la vitesse mais bien pour gagner une certaine protection contre la copie. Je comprends les intentions de ceux qui voudraient que tout le monde produise du "code ouvert" (open source) mais cette philosophie est valable uniquement dans les pays où il y a des centaines de millions de personnes.  Dans un petit pays comme le Québec, il est impossible de gagner sa vie avec du code ouvert pcq il n'y a pas assez de monde pour acheter nos services complémentaires. (C'est une problématique semblable à celle des artistes.)

Je comprends très bien que la compilation du code n'est pas une protection absolue et que des gens intelligents peuvent décompiler et reconstruire le code. Je suis prêt à vivre avec cela. Je crois que les personnes qui sont capables de décompiler du code ne s'amuseront pas à décompiler mon humble produit. De toutes façons, s'ils le font, je les laisserai tranquilles parce que leur travail de décompilation leur aura bien donné le droit de regarder mon code. Par contre, la compilation sera suffisante pour décourager les petits paresseux qui sont seulement intéressés à utiliser le travail des autres sans les compenser. En attendant que je traduise mon produit en anglais, il me faut donc la protection de la compilation.

Ceci dit, même pour un produit comme Pyrex ou comme PyPy, il me faudrait les conseils d'un programmeur senior et pour cela je suis prêt à payer les services de quelqu'un qui me donnerait trois ou quatre heures de cours sur la façon d'utiliser l'un ou l'autre de ces produits.

Avec toutes mes salutations

Constant Deniger



Pour envoyer un message à ce groupe, envoyez un e-mail à l'adresse montrealpython@googlegroups.com.

Visitez ce groupe à l'adresse https://groups.google.com/group/montrealpython.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.

Richard Vézina

unread,
Dec 9, 2016, 12:39:47 AM12/9/16
to montrea...@googlegroups.com
Si c'est simplement compiler ton code, tu n'as qu'à compiler ton code python : https://docs.python.org/2/library/py_compile.html

Informe toi sur le byte-compile... Les fichiers .pyc que l'interpréteur génère et placent à côté de tes fichiers sources dans l'arborescence de ton projet...

Ça se décompile comme des .exe d'ailleurs, mais rendu là, il faut que ton code en vaille la peine pour ce donner tant de mal...

Par contre, je te conseil de bien lire et comprendre les licences des librairies que tu utilisent, elles peuvent ne pas être compatible avec ce que tu envisage de faire, soit ne pas distribuer tes sources... Tu peux donner la licence que tu veux à ton code, mais tu ne peux pas faire tout ce que tu veux avec les dépendances de celui-ci, particulièrement si tu envisage une vocation commerciale à ton produit.

Bonne chance.

Richard

Pour envoyer un message à ce groupe, envoyez un e-mail à l'adresse montrea...@googlegroups.com.

Visitez ce groupe à l'adresse https://groups.google.com/group/montrealpython.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages