code

파이썬에서 다중 스레드 프로그램을 어떻게 프로파일 링 할 수 있습니까?

codestyles 2020. 12. 9. 08:13
반응형

파이썬에서 다중 스레드 프로그램을 어떻게 프로파일 링 할 수 있습니까?


저는 파이썬으로 본질적으로 다중 스레드 모듈을 개발하고 있는데, 그것이 어디에서 시간을 보내고 있는지 알고 싶습니다. cProfile은 주 스레드 만 프로파일 링하는 것 같습니다. 계산에 관련된 모든 스레드를 프로파일 링하는 방법이 있습니까?


yappi (Yet Another Python Profiler)를 참조하세요 .


하나를 실행하는 대신 각 스레드에서 cProfile별도의 cProfile인스턴스를 실행 한 다음 통계를 결합 할 수 있습니다 . Stats.add()자동으로 수행됩니다.


약간의 추가 작업을 수행해도 괜찮다면 .NET Framework를 구현하는 고유 한 프로파일 링 클래스를 작성할 수 있습니다 profile(self, frame, event, arg). 함수가 호출 될 때마다 호출되며, 그로부터 통계를 수집하는 구조를 상당히 쉽게 설정할 수 있습니다.

그런 다음을 사용 threading.setprofile하여 모든 스레드에서 해당 함수를 등록 할 수 있습니다 . 함수가 호출되면 어떤 기능이 threading.currentThread()실행되고 있는지 확인하는 데 사용할 수 있습니다 . 자세한 정보 (및 바로 실행할 수있는 레시피) :

http://code.activestate.com/recipes/465831/

http://docs.python.org/library/threading.html#threading.setprofile


다른 스레드의 주요 기능이 다르기 때문에 여기profile_func() 에서 매우 유용한 데코레이터를 사용할 수 있습니다 .


파이썬에 대해 그런 것을 지원하는 프로파일 링 응용 프로그램을 알지 못합니다.하지만 작업이 시작된시기와 종료 된시기 및 시간에 대한 정보를 입력하는 로그 파일을 작성하는 Trace 클래스를 작성할 수 있습니다. 소비.

문제에 대한 간단하고 빠른 해결책입니다.

참고 URL : https://stackoverflow.com/questions/653419/how-can-i-profile-a-multithread-program-in-python

반응형