Maison > Article > développement back-end > Artefact pour visualiser facilement le processus d'appel du programme Python
Jetons d'abord un coup d'œil aux rendus :
Que diriez-vous, c'est très étonnant~
Terminons ce processus de visualisation ensemble.
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
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
À 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 :
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!