Artifak untuk memvisualisasikan proses panggilan program Python dengan mudah

王林
Lepaskan: 2023-04-12 22:10:04
ke hadapan
1581 orang telah melayarinya

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
Salin selepas log masuk

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()
Salin selepas log masuk

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()
Salin selepas log masuk

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!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan