안녕하세요 전문가 Pythonists, 내 프로그램에 대한 자세한 타이밍 정보를 가지고 cProfile을 사용하기 시작했습니다. 그러나 상당한 오버 헤드가 있다는 것은 나에게 상당히 혼란 스럽다. cProfile이 7 초를보고하는 이유는 무엇입니까? 아래의 코드에서 시간 모듈은 2 초만보고 했습니까?파이썬 cProfile에서 심각한 오버 헤드가 발생 했습니까?
# a simple function
def f(a, b):
c = a+b
# a simple loop
def loop():
for i in xrange(10000000):
f(1,2)
# timing using time module
# 2 seconds on my computer
from time import time
x = time()
loop()
y = time()
print 'Time taken %.3f s.' % (y-x)
# timing using cProfile
# 7 seconds on my computer
import cProfile
cProfile.runctx('loop()', globals(), locals())
또한이 함수는 매우 평범하기 때문에 프로파일 러가 상대적으로 총 실행 시간을 많이 차지하는 것으로 보입니다 자귀. –
답장을 보내 주셔서 감사합니다. loop()의 반복 횟수를 10 백만에서 100 백만으로 늘리면 타이밍이 선형으로 확장됩니다! 시간 모듈은 20 초가 걸리고 cProfile은 70 초가 걸렸습니다. cProfile을 실행하는 데 시간이 오래 걸리지 만보고 된 시간 (코드에서 실제로 소요 된 시간)은 오버 헤드를 제외해야합니다. cProfile을 보정하는 방법이 있습니까 (코드에서 실제로 소요 된 시간에만 관심이 있으므로)? – user378289
@xqx : 내가 아는 것은 아닙니다. 프로파일 링은 프로그램의 다른 부분의 _ 관련성에 대한 아이디어를 제공하지만 프로덕션 성능보고에 적합하지 않습니다. –