程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【 python】 artefact pour visualiser facilement le processus dappel du programme Python

編輯:Python

Aujourd'hui, nous allons partager Python La Bibliothèque de tiers divin du Royaume -- pycallgraph,Grâce à cette bibliothèque et en combinant graphviz Outils,Ce qui est très pratique à faire Python Visualisation du processus d'appel d'application

Regardons d'abord l'image.

Comment ça va?,C'est incroyable~

Maintenant, nous allons terminer ce processus de visualisation ensemble

Installation graphviz Outils

Processus de production d'images,C'est l'outil de dépendance graphviz De,Nous allons d'abord télécharger l'installation

Télécharger l'adresse

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

Pour plus de détails graphviz Outils,Tout le monde devrait se familiariser avec,Nous avons déjà travaillé sur la visualisation de l'arbre de décision avec cet outil,Pour plus de détails, voir ici

Série de tutoriels d'introduction à l'analyse des données-Arbre de décision en action

Le lien ci - dessus contient le processus détaillé de configuration de l'installation,Plus de détails ici.

Sur le terrain

Ensuite, nous devons installer deux autres Python Bibliothèques dépendantes

pip install pycallgraph

Nous allons commencer par écrire 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 simple., Deux classes simples sont définies ,Principal pycallgraph Le Code de base de main En fonction,In with Sous le bloc de code, Il suffit d'exécuter le Code que nous avons défini

Exécuter le code ci - dessus,Sera généré dans le répertoire courant basic.png Fichier image

L'image générée montre clairement l'ensemble du Code en cours d'exécution ,De main Initialisation du bloc de code à chaque classe , En un coup d'oeil

Un autre exemple un peu 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 n'est pas non plus responsable , Mais à l'intérieur du compilateur est appelé re Regular, Regardons les images qui en résultent

Vous pouvez voir que tout le processus de code est beaucoup plus compliqué , Parce qu'il y a beaucoup d'appels internes réguliers, etc , Mais l'ensemble est encore très clair

On peut dire que cette bibliothèque de tiers divins ,C'est beaucoup. Python Les amoureux, Surtout pour commencer Python L'Évangile des Amis du Royaume , Quand nous rencontrons des blocs de code plus complexes que nous ne connaissons pas , Utilisez la bibliothèque pour essayer la visualisation , Voir si on peut s'en inspirer ~

C'est bon,C'est tout ce qui a été partagé aujourd'hui,Si tu veux.Oui.C'est parti.~

Un excellent examen du passé
Itinéraire et téléchargement de données pour les débutants(Graphique et texte+Vidéo)Télécharger la série d'introduction à l'apprentissage automatique《Apprentissage automatique》(Discours de Huang haiguang)Impression de documents tels que les notes d'apprentissage en machine et en profondeur《Méthodes d'apprentissage statistique》Code Recovery album Machine Learning ExchangeqqGroupe955171419,Veuillez scanner le Code pour rejoindre le Groupe Wechat


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved