이 기사에서는 주로 Python 런타임의 여러 가지 방법을 자세히 소개하고 각 런타임 방법의 장단점을 분석합니다. 관심 있는 친구들은 다음과 유사한
내가 본 최초의 손글씨를 참조할 수 있습니다.
import datetime def time_1(): begin = datetime.datetime.now() sum = 0 for i in xrange(10000000): sum = sum + i end = datetime.datetime.now() return end-begin print time_1()
출력은 다음과 같습니다.
➜ Python python time_1.py
0:00:00.280797
timeit 모듈을 사용하는 또 다른 방법은 다음과 같습니다.
In [5]: import timeit In [6]: timeit.timeit("sum(range(100))") Out[6]: 1.2272648811340332
다음과 같이 명령줄에서 이 timeit 모듈을 사용할 수도 있습니다:
➜ Python python -m timeit -s"import time_1 as t" "t.time_1()" 0:00:00.282044 10 loops, best of 3: 279 msec per loop
참고: timeit 모듈은 보다 정확한 시간을 얻기 위해 프로그램을 여러 번 실행하므로 반복 실행의 영향을 피해야 합니다. 예를 들어 x.sort()와 같은 작업의 경우 첫 번째 실행 후 후속 작업이 이미 정렬되어 있으므로 정확도에 영향을 미칩니다.
또 다른 방법은 cProfile 모듈을 사용하는 것입니다. 코드는 다음과 같으며 이름은 time_1.py입니다.
import datetime def time_1(): begin = datetime.datetime.now() sum = 0 for i in xrange(10000000): sum = sum + i end = datetime.datetime.now() return end-begin if __name__ == '__main__': print time_1() import cProfile cProfile.run('time_1()')
프로그램 실행 결과는 다음과 같습니다.
➜ Python python time_1.py 0:00:00.282828 2 function calls in 0.000 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.000 0.000 <string>:1(<module>) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} Traceback (most recent call last): File "time_1.py", line 15, in <module> cProfile.run('main()') File "/usr/lib/python2.7/cProfile.py", line 29, in run prof = prof.run(statement) File "/usr/lib/python2.7/cProfile.py", line 135, in run return self.runctx(cmd, dict, dict) File "/usr/lib/python2.7/cProfile.py", line 140, in runctx exec cmd in globals, locals File "<string>", line 1, in <module> NameError: name 'main' is not defined ➜ Python vi time_1.py ➜ Python python time_1.py 0:00:00.284642 5 function calls in 0.281 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.281 0.281 <string>:1(<module>) 1 0.281 0.281 0.281 0.281 time_1.py:3(time_1) 2 0.000 0.000 0.000 0.000 {built-in method now} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
처음에 있는 코드의 마지막 줄은 cProfile.run('main()')입니다. main()이 없다고 나오네요. main()을 함수 이름으로 바꾸시면 됩니다.
위 내용이 이 글의 전체 내용입니다. Python 프로그래밍을 배우시는 모든 분들께 도움이 되었으면 좋겠습니다.
Python 런타임 메소드와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!