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

王林
Libérer: 2023-04-12 22:10:04
avant
1582 Les gens l'ont consulté

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
Copier après la connexion

É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()
Copier après la connexion

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()
Copier après la connexion

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!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal