Maison  >  Article  >  développement back-end  >  Artefact pour visualiser facilement le processus d'appel du programme Python

Artefact pour visualiser facilement le processus d'appel du programme Python

王林
王林avant
2023-04-12 22:10:041561parcourir

Artefact pour visualiser facilement le processus d'appel du programme Python

Jetons d'abord un coup d'œil aux rendus :

Artefact pour visualiser facilement le processus d'appel du programme Python

Que diriez-vous, c'est très étonnant~

Terminons ce processus de visualisation ensemble.

1. Installez l'outil graphviz

Le processus de génération d'images dépend de l'outil graphviz. Nous le téléchargeons et l'installons en premier.

Adresse de téléchargement

  • http://www.graphviz.org/download/

2 Combat pratique

Ensuite, nous devons installer deux bibliothèques dépendantes de Python.

pip install pycallgraph

Écrivons d'abord un code de base ;

from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput
class Banana:
 def eat(self):
 pass
class Person:
 def __init__(self):
 self.no_bananas()
 def no_bananas(self):
 self.bananas = []
 def add_banana(self, banana):
 self.bananas.append(banana)
 def eat_bananas(self):
 [banana.eat() for banana in self.bananas]
 self.no_bananas()
def main():
 graphviz = GraphvizOutput()
 graphviz.output_file = 'basic.png'
 with PyCallGraph(output=graphviz):
 person = Person()
 for a in range(10):
 person.add_banana(Banana())
 person.eat_bananas()
if __name__ == '__main__':
 main()

Le code est relativement simple et définit deux classes simples. Le code de base de pycallgraph se trouve principalement dans la fonction principale, exécutez le code que vous avez défini une fois. pouvez

exécuter le code ci-dessus et un fichier image basic.png sera généré dans le répertoire actuel

Artefact pour visualiser facilement le processus d'appel du programme Python

À partir de l'image générée, vous pouvez clairement voir le processus en cours d'exécution de l'ensemble du code, du bloc de code principal au initialisation de chaque classe. On peut dire que c'est clair en un coup d'œil.

Prenons un autre exemple plus compliqué :

import re
from pycallgraph import PyCallGraph
from pycallgraph import Config
from pycallgraph.output import GraphvizOutput
def main():
 graphviz = GraphvizOutput()
 graphviz.output_file = 'regexp.png'
 config = Config(include_stdlib=True)
 with PyCallGraph(output=graphviz, config=config):
 reo = compile()
 match(reo)
def compile():
 return re.compile('^[abetors]*$')
def match(reo):
 [reo.match(a) for a in words()]
def words():
 return [
 'abbreviation',
 'abbreviations',
 'abettor',
 'abettors',
 'abilities',
 'ability',
 'abrasion',
 'abrasions',
 'abrasive',
 'abrasives',
 ]
if __name__ == '__main__':
 main()

Le code est également irresponsable, mais la re-régularisation est appelée à l'intérieur du compilateur. Jetons un coup d'œil à l'image finale générée :

Artefact pour visualiser facilement le processus d'appel du programme Python

Vous pouvez voir l'intégralité du processus de code. C'est beaucoup plus compliqué car beaucoup de fonctions internes régulières sont appelées en interne, mais le tout reste très clair

On peut dire que cette bibliothèque tierce de niveau divin est définitivement une bonne nouvelle pour de nombreux passionnés de Python, en particulier ceux qui débutent tout juste dans le domaine Python Lorsque nous rencontrons des blocs de code peu familiers et complexes, autant utiliser cette bibliothèque pour essayer la visualisation et voir si nous pouvons nous en inspirer ~

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer