Salome HOME
CCAR : remplacement separateur New24.gif par Sep.gif
[tools/eficas.git] / Exemples / profile / main.py
1 """
2    Cet exemple met en oeuvre le profiling de Python sur un cas
3    avec plusieurs éléments de définition,
4    une opération de vérification du dictionnaire d
5    et l'appel à la méthode supprime de l'objet o 
6 """
7
8 import sys
9 sys.path[:0]=['../..']
10
11 def main():
12    from Accas import SIMP,FACT,BLOC
13    from Accas import AU_MOINS_UN
14
15    # Construction objet de définition
16
17    cata= FACT(mcf1=FACT(a=SIMP(typ='I'),b=SIMP(typ='I')),
18               mcf2=FACT(c=SIMP(typ='I'),d=SIMP(typ='I')),
19               a    =SIMP(typ='I'),
20               bloc1=BLOC(condition="a==1",
21                           c=SIMP(typ='I'),
22                           d=SIMP(typ='I')
23                         ),
24               sect3=FACT(c=SIMP(typ='I'),d=SIMP(typ='I')),
25               regles=AU_MOINS_UN('sect3'),
26              )
27
28    # Vérification objet de définition
29    cr=cata.report()
30    if cr.estvide():
31       print "L'objet de définition est valide "
32    else:
33       print cr
34
35
36    d= {'mcf1':{'a':1,'b':2},
37        'mcf2':({'c':3},{'c':5}),
38        'sect3':{'c':3,'d':5},
39        'a':1,
40        'c':2,
41       }
42
43    # Création de l'objet MCFACT de nom mcf1
44    o=cata(d,'mcf1',None)
45    # Vérification objet MCFACT
46    cr= o.report()
47    if cr.estvide():
48       print "L'objet MCFACT basé sur le dictionnaire %s est valide " % d
49    else:
50       print "L'objet MCFACT basé sur le dictionnaire %s n'est pas valide " % d
51       print cr
52
53    o.supprime()
54
55 import profile
56 #profile.run("main()")
57 prof=profile.Profile()
58 try:
59    prof.run("main()")
60 except SystemExit:
61    pass
62
63 import pstats
64 # Impression de différentes statistiques
65 p=pstats.Stats(prof)
66
67 print "*********************************************"
68 print "*  Trié par temps interne (20 plus grands)  *"
69 print "*********************************************"
70 p.sort_stats('time').print_stats(20)
71
72 print "***********************************************"
73 print "*  Liste des appellés triée par temps interne *"
74 print "***********************************************"
75 p.print_callees()
76
77 print "************************************************************"
78 print "*  Liste des appellants de is_reel triée par temps interne *"
79 print "************************************************************"
80 p.print_callers('is_reel')
81
82 print "*********************************************"
83 print "*  Trié par temps cumulé (20 plus grands)   *"
84 print "*********************************************"
85 p.sort_stats('cumulative').print_stats(20)
86
87 print "*********************************************"
88 print "*  Trié par noms de fonction                *"
89 print "*********************************************"
90 p.sort_stats('name').print_stats()
91
92 print "*********************************************"
93 print "*  Statistique standard                     *"
94 print "*********************************************"
95 prof.print_stats()
96
97 print "*************************************************"
98 print "*  Trié par fichier seulement methodes __init__ *"
99 print "*************************************************"
100 p.sort_stats('file').print_stats('__init__')
101
102
103
104
105