Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
psyco [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


psyco

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
psyco [2008/07/01 08:56]
tyrtamos
psyco [2008/07/01 09:26]
tyrtamos
Ligne 8: Ligne 8:
  
 De ce fait, psyco est limité aux processeurs de type i386. De ce fait, psyco est limité aux processeurs de type i386.
 +
 +Site de référence: [[http://psyco.sourceforge.net/]]
 +
 +Le manuel est ici: [[http://psyco.sourceforge.net/psycoguide/index.html]]
  
 ===== Installation de psyco ===== ===== Installation de psyco =====
Ligne 18: Ligne 22:
  
 Si vous avez une version de Python inférieure à 2.5, cherchez le bon programme au même endroit (pour Python v 2.4 ou 2.3). Si vous avez une version de Python inférieure à 2.5, cherchez le bon programme au même endroit (pour Python v 2.4 ou 2.3).
 +
 +Pour Windows: psyco est compatible avec py2exe, ce qui fait qu'un programme pourra s'exécuter accéléré par psyco, sans que celui-ci ne soit installé sur le PC.
  
 ==== Linux ==== ==== Linux ====
Ligne 64: Ligne 70:
 Et c'est tout! Et c'est tout!
  
 +A titre d'essai, je vous propose une fonction qui cherche la liste de tous les nombres premiers inférieurs à une valeur donnée:
 +
 +<code python>
 +#!/usr/bin/python
 +# -*- coding: latin1 -*-
 +from __future__ import division
 +
 +import time
 +from math import *
 +
 +def premiers(n):
 +    """premiers(n): trouve tous les nombres premiers <= n et les affiche sous forme d'une liste"""
 +    if n==1:
 +        return []
 +    if n==2:
 +        return [2]
 +    if n in (3,4):
 +        return [2,3]
 +    if n in (5,6):
 +        return [2,3,5]
 +    p=[2,3,5]
 +    k=7
 +    while k<=n:
 +        rk=int(sqrt(k))+1
 +        i=0
 +        while i<len(p):
 +            if p[i]>rk:
 +                p.append(k)
 +                break
 +            if (k % p[i])==0:
 +                break
 +            i+=1
 +        k+=2
 +    return p
 +
 +if __name__ == "__main__":
 +    try:
 +        import psyco
 +        psyco.full()
 +    except ImportError:
 +        pass
 +    tps=time.clock()
 +    premiers(1000000)
 +    print time.clock()-tps
 +
 +</code>
 +
 +Pour comparer "avec ou sans psyco", il suffit de mettre psyco en commentaire dans le code pour la partie "sans psyco".
 +
 +Résultat des courses: avec premiers(1000000), on trouve:
 +
 +  * sans psyco: 7.07724387626 secondes
 +
 +  * avec psyco: 0.459823772467 seconde
 +
 +Ce qui représente tout de même une **division par 15 du temps de calcul**!
 +
 +Mes différents essais m'ont montré que sur certains programmes, on était proche du temps de calcul du C.
 +
 +===== Limitations de l'utilisation de psyco =====
 +
 +Il existe un certain nombre de limitations qui sont expliquées (en anglais) sur le site [[http://psyco.sourceforge.net/]], et je vous invite à vous y reporter.
 +
 +Voir en particulier à partir du manuel: [[http://psyco.sourceforge.net/psycoguide/index.html]]
  
  
psyco.txt · Dernière modification: 2008/07/02 09:52 de tyrtamos