2017-05-12 15 views
1

나는 Jupyter/IPython과 함께 꽤 많이 일하고 있으며 각 셀 앞에 %%time magic 명령을 사용하여 CPU 및 벽시계에 대한 힌트를 얻습니다. 시간을 보냈다.스크립트 내에서 IPython의 %% 시간 마술을 사용하여 CPU 시간 측정

스크립트 내에서 동일한 측정 값을 얻는 간단한 방법이 있습니까?

보다 구체적으로, 나는 그런 일을하고 싶습니다 :

results = measure_times(something_possibly_parallel) 
print results.wall_clock, results.cpu_user, results.cpu_total 

답변

0

당신은 파이썬 context manager으로 원하는 measure_times() 유틸리티를 구현할 수 있습니다. 그런 다음 사용은 다음과 같이 될 것입니다 :

with measure_times("block name"): 
    your code here 

만 벽 시간을 측정하는 샘플 구현은 다음과 같습니다

$ cat measure_times.py 
import timeit 

class measure_times: 
    def __init__(self, blockname): 
     self.blockname = blockname 

    def __enter__(self): 
     self.starttime = timeit.default_timer() 

    def __exit__(self, exc_type, exc_value, traceback): 
     t = timeit.default_timer() - self.starttime 
     print('--- Time measurement report: {}: {}s'.format(self.blockname, t)) 


with measure_times("Integer sum"): 
    s = 0 
    for i in range(1000000): 
     s += i 
    print(s) 

with measure_times("Floating point sum"): 
    s = 0 
    for i in range(1000000): 
     s += i 
    print(s) 

$ python measure_times.py 
499999500000 
--- Time measurement report: Integer sum: 0.0683062076569s 
499999500000 
--- Time measurement report: Floating point sum: 0.066034078598s 
+0

오른쪽. 그러나 IPython이 실제 CPU 시간을 측정하는 방법에 대해서도 궁금해했습니다 (병렬 처리의 경우 벽 시계 시간과 다를 수 있습니다.) timetime 모듈은이를 수행 할 수 없습니까? –

+0

'timeit'은 측정하지 않습니다. CPU 시간. CPU 시간을 측정하려면 [이 답변] (https://codereview.stackexchange.com/a/48459)을 참조하십시오 (그러나 Python 3.3 이상에서만 작동합니다). – Leon