2013-07-04 6 views
1

J'ai un programme python qui s'exécute en environ 1s. Lorsqu'il est exécuté sous Pypy, cela prend environ 2s. Toutefois, si je change mon programme deApprentissage persistant en pypy

import sys 
from code import execute 
if __main__: 
    execute(sys.argv) 

à

import sys 
from code import execute 
if __main__: 
    for i in range(100): 
     print i 
     execute(sys.argv) 

vous pouvez tilisez vraiment comment pypy est "l'apprentissage". Les premières exécutions prennent environ 2 secondes, puis les exécutions vont de plus en plus vite et finissent par prendre environ 0,15s. Puis-je faire en sorte que pypy "se souvienne" de son apprentissage d'optimisation, de sorte que la première exécution prenne 0.15. Comme il semble maintenant je ne peux pas bénéficier de pypy, puisque mon application exécutera de nombreuses exécutions autonomes de la fonction execute.

Répondre

2

Non, c'est basically not possible. Il est possible d'obtenir le résultat souhaité avec des solutions de contournement: par exemple, transformez votre programme en un "serveur" local qui attend des requêtes (en exécutant un script de 5 lignes) et travail de execute(). Ce n'est certainement pas la solution la plus élégante mais elle permet de faire tout le execute() par le même processus, avec (après un certain temps) les mêmes accélérations que vous avez mesurées.