파이썬에서 다중 스레드 프로그램을 어떻게 프로파일 링 할 수 있습니까?
저는 파이썬으로 본질적으로 다중 스레드 모듈을 개발하고 있는데, 그것이 어디에서 시간을 보내고 있는지 알고 싶습니다. 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
'code' 카테고리의 다른 글
조건부 텍스트를 출력하는 Twig 속기 구문이 있습니까? (0) | 2020.12.10 |
---|---|
VS Code에서 여러 터미널을 추가하는 방법은 무엇입니까? (0) | 2020.12.10 |
내 웹 사이트에서 이미지를 업로드 할 수있는 API가있는 좋은 이미지 호스팅 사이트는 무엇입니까? (0) | 2020.12.09 |
여러 값의 C ++ 배열 할당 (0) | 2020.12.09 |
MVVM Light Toolkit 샘플 (0) | 2020.12.09 |