Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Artifak untuk memvisualisasikan proses panggilan program Python dengan mudah

Artifak untuk memvisualisasikan proses panggilan program Python dengan mudah

王林
王林ke hadapan
2023-04-12 22:10:041561semak imbas

Artifak untuk memvisualisasikan proses panggilan program Python dengan mudah

Mari kita lihat renderingnya dahulu:

Artifak untuk memvisualisasikan proses panggilan program Python dengan mudah

Bagaimana pula, memang menakjubkan~

Di bawah Mari kita selesaikan proses visualisasi ini bersama-sama.

1. Pasang alat graphviz

Proses penjanaan imej bergantung pada graphviz alat Kami memuat turun dan memasangnya terlebih dahulu.

Alamat muat turun

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

2. Pertempuran sebenar

Seterusnya Dua perpustakaan bergantung Python juga perlu dipasang.

pip install pycallgraph

Mari kita tulis kod asas dahulu;

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()

Kod ini agak mudah dan mentakrifkan dua kelas ringkas Kod teras pycallgraph berada dalam fungsi utama dan bersama Di bawah blok kod, laksanakan kod yang kami takrifkan sekali

Jalankan kod di atas dan fail imej basic.png akan dijana dalam direktori semasa

Artifak untuk memvisualisasikan proses panggilan program Python dengan mudah

Daripada gambar yang dihasilkan, anda boleh melihat dengan jelas proses berjalan keseluruhan kod Dari blok kod utama hingga permulaan setiap kelas, ia boleh dikatakan jelas sekali imbas.

Mari kita ambil satu lagi contoh yang lebih rumit:

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()

Kod ini juga tidak bertanggungjawab, tetapi penyelarasan semula dipanggil di dalam pengkompil. Mari kita lihat imej yang dijana akhir:

Artifak untuk memvisualisasikan proses panggilan program Python dengan mudah

Anda dapat melihat bahawa keseluruhan proses kod adalah jauh lebih rumit kerana banyak fungsi dalaman biasa dipanggil secara dalaman, tetapi semuanya masih sangat jelas

Adalah boleh dikatakan bahawa ini adalah menakjubkan Perpustakaan pihak ketiga Tahap pastinya berita baik untuk ramai peminat Python, terutamanya mereka yang baru bermula dalam bidang Python Apabila kita menghadapi beberapa blok kod yang tidak dikenali dan kompleks, kita juga boleh menggunakan ini perpustakaan untuk mencuba visualisasi dan lihat Bolehkah anda mendapatkan inspirasi daripadanya~

Atas ialah kandungan terperinci Artifak untuk memvisualisasikan proses panggilan program Python dengan mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam