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