J'essaie de créer un module qui vous permette de faire la même chose que l'édition professionnelle de PyCharm, prendre un instantané de profil pendant l'exécution du programme, mais en tant que module au lieu d'une interface utilisateur toutCréer un script pProfile python pour profiler un autre script python contenu dans un répertoire différent
pour ce faire, je tentais d'abord faire un script qui reçoit un chemin vers un autre script et imprime le profil d'un script plus tard (je suppose toujours que le script plus tard a une principale).
Voici ce que je suis:
import cProfile
import imp
pr = cProfile.Profile()
pr.disable()
def profileScript(script):
pr.enable()
pr.run('script')
pr.disable()
pr.print_stats()
if __name__ == '__main__':
script = imp.load_source('meihn','A:\TestProgram\meihn.py')
profileScript(script)
et le script de test je suis le profilage:
def func1(a,b):
return a + b
def func2(lista, listb):
listc = []
for i in range(0, len(lista)):
listc.append(func1(lista[i],listb[i]))
return listc
def func3(list):
a = 1
for i in list:
a *= i
return a
if __name__ == '__main__':
for i in range(0, 1000):
la = [1, 2, 3, 4]
lb = [5, 5, 5, 5]
lc = func2(la, lb)
ld = func2(la, lc)
le = func2(lb, lc)
input()
for i in range(0, 10000):
lf = func3(le)
input()
Il fonctionne mais il ne s'arrête pas aux entrées et le résultat est le suivant:
5 function calls in 0.000 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 <string>:1(<module>)
1 0.000 0.000 0.000 0.000 cProfile.py:132(run)
1 0.000 0.000 0.000 0.000 cProfile.py:137(runctx)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
1 0.000 0.000 0.000 0.000 {method 'enable' of '_lsprof.Profiler' objects}
Process finished with exit code 0
ce qui me dit au fond, ce n'a pas appelé l'une des fonctions de meihn.py, je soppose c'est parce que il n'a pas appelé le principal pour une raison quelconque. Un commentaire à ce sujet ainsi que sur la façon de faire le snapshot asynchrone serait d'une grande aide.
J'utilise Python 2.7
Merci à l'avance.