Pour obtenir un ligne par ligne l'analyse de la mémoire et du temps de votre programme, je suggère d'utiliser memory_profiler
y line_profiler
.
Installation :
# Time profiler
$ pip install line_profiler
# Memory profiler
$ pip install memory_profiler
# Install the dependency for a faster analysis
$ pip install psutil
La partie commune est que vous spécifiez la fonction que vous voulez analyser en utilisant les décorateurs respectifs.
Exemple : J'ai plusieurs fonctions dans mon fichier Python main.py
que je veux analyser. L'une d'entre elles est linearRegressionfit()
. J'ai besoin d'utiliser le décorateur @profile
qui m'aide à profiler le code par rapport aux deux : le temps et la mémoire.
Apportez les modifications suivantes à la définition de la fonction
@profile
def linearRegressionfit(Xt,Yt,Xts,Yts):
lr=LinearRegression()
model=lr.fit(Xt,Yt)
predict=lr.predict(Xts)
# More Code
Pour Profilage temporel ,
Cours :
$ kernprof -l -v main.py
Sortie
Total time: 0.181071 s
File: main.py
Function: linearRegressionfit at line 35
Line # Hits Time Per Hit % Time Line Contents
==============================================================
35 @profile
36 def linearRegressionfit(Xt,Yt,Xts,Yts):
37 1 52.0 52.0 0.1 lr=LinearRegression()
38 1 28942.0 28942.0 75.2 model=lr.fit(Xt,Yt)
39 1 1347.0 1347.0 3.5 predict=lr.predict(Xts)
40
41 1 4924.0 4924.0 12.8 print("train Accuracy",lr.score(Xt,Yt))
42 1 3242.0 3242.0 8.4 print("test Accuracy",lr.score(Xts,Yts))
Pour Profilage de la mémoire ,
Cours :
$ python -m memory_profiler main.py
Sortie
Filename: main.py
Line # Mem usage Increment Line Contents
================================================
35 125.992 MiB 125.992 MiB @profile
36 def linearRegressionfit(Xt,Yt,Xts,Yts):
37 125.992 MiB 0.000 MiB lr=LinearRegression()
38 130.547 MiB 4.555 MiB model=lr.fit(Xt,Yt)
39 130.547 MiB 0.000 MiB predict=lr.predict(Xts)
40
41 130.547 MiB 0.000 MiB print("train Accuracy",lr.score(Xt,Yt))
42 130.547 MiB 0.000 MiB print("test Accuracy",lr.score(Xts,Yts))
De plus, les résultats du profileur de mémoire peuvent également être tracés en utilisant matplotlib
en utilisant
$ mprof run main.py
$ mprof plot
Note : Testé sur
line_profiler
version == 3.0.2
memory_profiler
version == 0.57.0
psutil
version == 5.7.0
EDIT : Les résultats des profileurs peuvent être analysés à l'aide de la fonction TAMPPA paquet. En l'utilisant, nous pouvons obtenir des tracés souhaités ligne par ligne comme ![plot]()
0 votes
Vous pouvez créer votre propre bibliothèque multiplateforme en utilisant des importations dynamiques : "if sys.platform == 'win32' : import win_sysstatus as sysstatus ; else" ...
1 votes
Ce serait cool d'avoir quelque chose qui fonctionne sur App Engine aussi.
1 votes
L'âge des paquets est-il important ? Si quelqu'un a réussi du premier coup, pourquoi ne le ferait-il pas encore ?