>  기사  >  백엔드 개발  >  Python 프로그램 호출 프로세스를 쉽게 시각화하는 아티팩트

Python 프로그램 호출 프로세스를 쉽게 시각화하는 아티팩트

王林
王林앞으로
2023-04-12 22:10:041510검색

Python 프로그램 호출 프로세스를 쉽게 시각화하는 아티팩트

먼저 렌더링을 살펴보겠습니다.

Python 프로그램 호출 프로세스를 쉽게 시각화하는 아티팩트

어때요, 정말 놀랍습니다~

이 시각화 과정을 함께 완료해 봅시다.

1. graphviz 도구 설치

이미지 생성 과정은 graphviz 도구를 먼저 다운로드하여 설치합니다.

다운로드 주소

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

2. 실용적인 전투

다음으로 두 개의 Python 종속 라이브러리를 설치해야 합니다.

pip install pycallgraph

먼저 기본 코드를 작성해 보겠습니다.

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

코드는 비교적 간단하며 두 개의 간단한 클래스를 정의합니다. pycallgraph의 핵심 코드는 주로 with 코드 블록 아래에 있습니다.

위 코드를 실행하면 현재 디렉터리에 basic.png 이미지 파일이 생성됩니다.

Python 프로그램 호출 프로세스를 쉽게 시각화하는 아티팩트

생성된 이미지에서 메인 코드 블록부터 다음 디렉터리까지 전체 코드의 실행 과정을 명확하게 볼 수 있습니다. 각 클래스의 초기화는 한눈에 알 수 있다고 할 수 있습니다.

더 복잡한 예를 하나 더 들어보겠습니다.

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

코드도 무책임하지만 컴파일러 내부에서 다시 정규화가 호출됩니다. 최종 생성된 그림을 살펴보겠습니다.

Python 프로그램 호출 프로세스를 쉽게 시각화하는 아티팩트

전체 코드 프로세스를 볼 수 있습니다. 많은 일반 내부 함수가 내부적으로 호출되기 때문에 훨씬 더 복잡하지만 전체 내용은 여전히 ​​매우 명확합니다

이 신 수준의 타사 라이브러리는 많은 Python 애호가, 특히 Python 애호가에게 확실히 좋은 소식이라고 말할 수 있습니다. 이제 막 Python 분야를 시작하는 분들. 낯설고 복잡한 코드 블록을 만나면 이 라이브러리를 사용하여 시각화를 시도하고 영감을 얻을 수도 있습니다~

위 내용은 Python 프로그램 호출 프로세스를 쉽게 시각화하는 아티팩트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제